dioxus_html/
elements.rs

1#![allow(non_upper_case_globals)]
2
3use dioxus_core::HasAttributes;
4use dioxus_core::IntoAttributeValue;
5#[cfg(feature = "hot-reload-context")]
6use dioxus_core_types::HotReloadingContext;
7use dioxus_html_internal_macro::impl_extension_attributes;
8
9#[cfg(feature = "hot-reload-context")]
10use crate::{map_global_attributes, map_svg_attributes};
11
12pub type AttributeDescription = (&'static str, Option<&'static str>, bool);
13
14macro_rules! impl_attribute {
15    (
16        $element:ident {
17            $(#[$attr_method:meta])*
18            $fil:ident: $vil:ident (DEFAULT),
19        }
20    ) => {
21        $(#[$attr_method])*
22        ///
23        /// ## Usage in rsx
24        ///
25        /// ```rust, no_run
26        /// # use dioxus::prelude::*;
27        #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
28        ///
29        /// rsx! {
30        ///     // Attributes need to be under the element they modify
31        #[doc = concat!("    ", stringify!($element), " {")]
32        ///         // Attributes are followed by a colon and then the value of the attribute
33        #[doc = concat!("        ", stringify!($fil), ": \"value\"")]
34        ///     }
35        #[doc = concat!("    ", stringify!($element), " {")]
36        ///         // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
37        #[doc = concat!("        ", stringify!($fil), ",")]
38        ///     }
39        /// };
40        /// ```
41        pub const $fil: AttributeDescription = (stringify!($fil), None, false);
42    };
43
44    (
45        $element:ident {
46            $(#[$attr_method:meta])*
47            $fil:ident: $vil:ident ($name:literal),
48        }
49    ) => {
50        $(#[$attr_method])*
51        ///
52        /// ## Usage in rsx
53        ///
54        /// ```rust, no_run
55        /// # use dioxus::prelude::*;
56        #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
57        ///
58        /// rsx! {
59        ///     // Attributes need to be under the element they modify
60        #[doc = concat!("    ", stringify!($element), " {")]
61        ///         // Attributes are followed by a colon and then the value of the attribute
62        #[doc = concat!("        ", stringify!($fil), ": \"value\"")]
63        ///     }
64        #[doc = concat!("    ", stringify!($element), " {")]
65        ///         // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
66        #[doc = concat!("        ", stringify!($fil), ",")]
67        ///     }
68        /// };
69        /// ```
70        pub const $fil: AttributeDescription = ($name, None, false);
71    };
72
73    (
74        $element:ident {
75            $(#[$attr_method:meta])*
76            $fil:ident: $vil:ident (volatile),
77        }
78    ) => {
79        $(#[$attr_method])*
80        ///
81        /// ## Usage in rsx
82        ///
83        /// ```rust, no_run
84        /// # use dioxus::prelude::*;
85        #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
86        ///
87        /// rsx! {
88        ///     // Attributes need to be under the element they modify
89        #[doc = concat!("    ", stringify!($element), " {")]
90        ///         // Attributes are followed by a colon and then the value of the attribute
91        #[doc = concat!("        ", stringify!($fil), ": \"value\"")]
92        ///     }
93        #[doc = concat!("    ", stringify!($element), " {")]
94        ///         // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
95        #[doc = concat!("        ", stringify!($fil), ",")]
96        ///     }
97        /// };
98        /// ```
99        pub const $fil: AttributeDescription = (stringify!($fil), None, true);
100    };
101
102    (
103        $element:ident {
104            $(#[$attr_method:meta])*
105            $fil:ident: $vil:ident (in $ns:literal),
106        }
107    ) => {
108        $(#[$attr_method])*
109        ///
110        /// ## Usage in rsx
111        ///
112        /// ```rust, no_run
113        /// # use dioxus::prelude::*;
114        #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
115        ///
116        /// rsx! {
117        ///     // Attributes need to be under the element they modify
118        #[doc = concat!("    ", stringify!($element), " {")]
119        ///         // Attributes are followed by a colon and then the value of the attribute
120        #[doc = concat!("        ", stringify!($fil), ": \"value\"")]
121        ///     }
122        #[doc = concat!("    ", stringify!($element), " {")]
123        ///         // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
124        #[doc = concat!("        ", stringify!($fil), ",")]
125        ///     }
126        /// };
127        /// ```
128        pub const $fil: AttributeDescription = (stringify!($fil), Some($ns), false)
129    };
130
131    (
132        $element:ident {
133            $(#[$attr_method:meta])*
134            $fil:ident: $vil:ident (in $ns:literal : volatile),
135        }
136    ) => {
137        $(#[$attr_method])*
138        ///
139        /// ## Usage in rsx
140        ///
141        /// ```rust, no_run
142        /// # use dioxus::prelude::*;
143        #[doc = concat!("let ", stringify!($fil), " = \"value\";")]
144        ///
145        /// rsx! {
146        ///     // Attributes need to be under the element they modify
147        #[doc = concat!("    ", stringify!($element), " {")]
148        ///         // Attributes are followed by a colon and then the value of the attribute
149        #[doc = concat!("        ", stringify!($fil), ": \"value\"")]
150        ///     }
151        #[doc = concat!("    ", stringify!($element), " {")]
152        ///         // Or you can use the shorthand syntax if you have a variable in scope that has the same name as the attribute
153        #[doc = concat!("        ", stringify!($fil), ",")]
154        ///     }
155        /// };
156        /// ```
157        pub const $fil: AttributeDescription = (stringify!($fil), Some($ns), true)
158    };
159}
160
161#[cfg(feature = "hot-reload-context")]
162macro_rules! impl_attribute_match {
163    (
164        $attr:ident $fil:ident: $vil:ident (DEFAULT),
165    ) => {
166        if $attr == stringify!($fil) {
167            return Some((stringify!($fil), None));
168        }
169    };
170
171    (
172        $attr:ident $fil:ident: $vil:ident (volatile),
173    ) => {
174        if $attr == stringify!($fil) {
175            return Some((stringify!($fil), None));
176        }
177    };
178
179    (
180        $attr:ident $fil:ident: $vil:ident ($name:literal),
181    ) => {
182        if $attr == stringify!($fil) {
183            return Some(($name, None));
184        }
185    };
186
187    (
188        $attr:ident $fil:ident: $vil:ident (in $ns:literal),
189    ) => {
190        if $attr == stringify!($fil) {
191            return Some((stringify!($fil), Some($ns)));
192        }
193    };
194}
195
196#[cfg(feature = "html-to-rsx")]
197macro_rules! impl_html_to_rsx_attribute_match {
198    (
199        $attr:ident $fil:ident $name:literal
200    ) => {
201        if $attr == $name {
202            return Some(stringify!($fil));
203        }
204    };
205
206    (
207        $attr:ident $fil:ident $_:tt
208    ) => {
209        if $attr == stringify!($fil) {
210            return Some(stringify!($fil));
211        }
212    };
213}
214
215macro_rules! impl_element {
216    (
217        $(#[$attr:meta])*
218        $name:ident None {
219            $(
220                $(#[$attr_method:meta])*
221                $fil:ident: $vil:ident $extra:tt,
222            )*
223        }
224    ) => {
225        #[allow(non_camel_case_types)]
226        $(#[$attr])*
227        ///
228        /// ## Usage in rsx
229        ///
230        /// ```rust, no_run
231        /// # use dioxus::prelude::*;
232        /// # let attributes = vec![];
233        /// # fn ChildComponent() -> Element { unimplemented!() }
234        /// # let raw_expression: Element = rsx! {};
235        /// rsx! {
236        ///     // Elements are followed by braces that surround any attributes and children for that element
237        #[doc = concat!("    ", stringify!($name), " {")]
238        ///         // Add any attributes first
239        ///         class: "my-class",
240        ///         "custom-attribute-name": "value",
241        ///         // Then add any attributes you are spreading into this element
242        ///         ..attributes,
243        ///         // Then add any children elements, components, text nodes, or raw expressions
244        ///         div {}
245        ///         ChildComponent {}
246        ///         "child text"
247        ///         {raw_expression}
248        ///     }
249        /// };
250        /// ```
251        pub mod $name {
252            #[allow(unused)]
253            use super::*;
254            pub use crate::attribute_groups::global_attributes::*;
255
256            pub const TAG_NAME: &'static str = stringify!($name);
257            pub const NAME_SPACE: Option<&'static str> = None;
258
259            $(
260                impl_attribute!(
261                    $name {
262                        $(#[$attr_method])*
263                        $fil: $vil ($extra),
264                    }
265                );
266            )*
267        }
268    };
269
270    (
271        $(#[$attr:meta])*
272        $name:ident $namespace:literal {
273            $(
274                $(#[$attr_method:meta])*
275                $fil:ident: $vil:ident $extra:tt,
276            )*
277        }
278    ) => {
279        $(#[$attr])*
280        ///
281        /// ## Usage in rsx
282        ///
283        /// ```rust, no_run
284        /// # use dioxus::prelude::*;
285        /// # let attributes = vec![];
286        /// # fn ChildComponent() -> Element { unimplemented!() }
287        /// # let raw_expression: Element = rsx! {};
288        /// rsx! {
289        ///     // Elements are followed by braces that surround any attributes and children for that element
290        #[doc = concat!("    ", stringify!($name), " {")]
291        ///         // Add any attributes first
292        ///         color: "red",
293        ///         "custom-attribute-name": "value",
294        ///         // Then add any attributes you are spreading into this element
295        ///         ..attributes,
296        ///         // Then add any children elements, components, text nodes, or raw expressions
297        ///         circle { cx: "10", cy: "10", r: "2", fill: "red" }
298        ///         ChildComponent {}
299        ///         "child text"
300        ///         {raw_expression}
301        ///     }
302        /// };
303        /// ```
304        pub mod $name {
305            #[allow(unused)]
306            use super::*;
307            pub use crate::attribute_groups::svg_attributes::*;
308
309            pub const TAG_NAME: &'static str = stringify!($name);
310            pub const NAME_SPACE: Option<&'static str> = Some($namespace);
311
312            $(
313                impl_attribute!(
314                    $name {
315                        $(#[$attr_method])*
316                        $fil: $vil ($extra),
317                    }
318                );
319            )*
320        }
321    };
322
323    (
324        $(#[$attr:meta])*
325        $element:ident [$name:literal, $namespace:tt] {
326            $(
327                $(#[$attr_method:meta])*
328                $fil:ident: $vil:ident $extra:tt,
329            )*
330        }
331    ) => {
332        #[allow(non_camel_case_types)]
333        $(#[$attr])*
334        ///
335        /// ## Usage in rsx
336        ///
337        /// ```rust, no_run
338        /// # use dioxus::prelude::*;
339        /// # let attributes = vec![];
340        /// # fn ChildComponent() -> Element { unimplemented!() }
341        /// # let raw_expression: Element = rsx! {};
342        /// rsx! {
343        ///     // Elements are followed by braces that surround any attributes and children for that element
344        #[doc = concat!("    ", stringify!($element), " {")]
345        ///         // Add any attributes first
346        ///         color: "red",
347        ///         "custom-attribute-name": "value",
348        ///         // Then add any attributes you are spreading into this element
349        ///         ..attributes,
350        ///         // Then add any children elements, components, text nodes, or raw expressions
351        ///         circle { cx: "10", cy: "10", r: "2", fill: "red" }
352        ///         ChildComponent {}
353        ///         "child text"
354        ///         {raw_expression}
355        ///     }
356        /// };
357        /// ```
358        pub mod $element {
359            #[allow(unused)]
360            use super::*;
361            pub use crate::attribute_groups::svg_attributes::*;
362
363            pub const TAG_NAME: &'static str = $name;
364            pub const NAME_SPACE: Option<&'static str> = Some($namespace);
365
366            $(
367                impl_attribute!(
368                    $element {
369                        $(#[$attr_method])*
370                        $fil: $vil ($extra),
371                    }
372                );
373            )*
374        }
375    }
376}
377
378#[cfg(feature = "hot-reload-context")]
379macro_rules! impl_element_match {
380    (
381        $el:ident $name:ident None {
382            $(
383                $fil:ident: $vil:ident $extra:tt,
384            )*
385        }
386    ) => {
387        if $el == stringify!($name) {
388            return Some((stringify!($name), None));
389        }
390    };
391
392    (
393        $el:ident $name:ident $namespace:literal {
394            $(
395                $fil:ident: $vil:ident $extra:tt,
396            )*
397        }
398    ) => {
399        if $el == stringify!($name) {
400            return Some((stringify!($name), Some($namespace)));
401        }
402    };
403
404    (
405        $el:ident $name:ident [$_:literal, $namespace:tt] {
406            $(
407                $fil:ident: $vil:ident $extra:tt,
408            )*
409        }
410    ) => {
411        if $el == stringify!($name) {
412            return Some((stringify!($name), Some($namespace)));
413        }
414    };
415}
416
417#[cfg(feature = "hot-reload-context")]
418macro_rules! impl_element_match_attributes {
419    (
420        $el:ident $attr:ident $name:ident None {
421            $(
422                $fil:ident: $vil:ident $extra:tt,
423            )*
424        }
425    ) => {
426        if $el == stringify!($name) {
427            $(
428                impl_attribute_match!(
429                    $attr $fil: $vil ($extra),
430                );
431            )*
432
433            return impl_map_global_attributes!($el $attr $name None);
434        }
435    };
436
437    (
438        $el:ident $attr:ident $name:ident $namespace:tt {
439            $(
440                $fil:ident: $vil:ident $extra:tt,
441            )*
442        }
443    ) => {
444        if $el == stringify!($name) {
445            $(
446                impl_attribute_match!(
447                    $attr $fil: $vil ($extra),
448                );
449            )*
450
451            return impl_map_global_attributes!($el $attr $name $namespace);
452        }
453    }
454}
455
456#[cfg(feature = "hot-reload-context")]
457macro_rules! impl_map_global_attributes {
458    (
459        $el:ident $attr:ident $element:ident None
460    ) => {
461        map_global_attributes($attr)
462    };
463
464    (
465        $el:ident $attr:ident $element:ident $namespace:literal
466    ) => {
467        if $namespace == "http://www.w3.org/2000/svg" {
468            map_svg_attributes($attr)
469        } else {
470            map_global_attributes($attr)
471        }
472    };
473
474    (
475        $el:ident $attr:ident $element:ident [$name:literal, $namespace:tt]
476    ) => {
477        if $namespace == "http://www.w3.org/2000/svg" {
478            map_svg_attributes($attr)
479        } else {
480            map_global_attributes($attr)
481        }
482    };
483}
484
485macro_rules! builder_constructors {
486    (
487        $(
488            $(#[$attr:meta])*
489            $name:ident $namespace:tt {
490                $(
491                    $(#[$attr_method:meta])*
492                    $fil:ident: $vil:ident $extra:tt,
493                )*
494            };
495         )*
496        ) => {
497        #[cfg(feature = "hot-reload-context")]
498        pub struct HtmlCtx;
499
500        #[cfg(feature = "hot-reload-context")]
501        impl HotReloadingContext for HtmlCtx {
502            fn map_attribute(element: &str, attribute: &str) -> Option<(&'static str, Option<&'static str>)> {
503                $(
504                    impl_element_match_attributes!(
505                        element attribute $name $namespace {
506                            $(
507                                $fil: $vil $extra,
508                            )*
509                        }
510                    );
511                )*
512                None
513            }
514
515            fn map_element(element: &str) -> Option<(&'static str, Option<&'static str>)> {
516                $(
517                    impl_element_match!(
518                        element $name $namespace {
519                            $(
520                                $fil: $vil $extra,
521                            )*
522                        }
523                    );
524                )*
525                None
526            }
527        }
528
529        #[cfg(feature = "html-to-rsx")]
530        pub fn map_html_attribute_to_rsx(html: &str) -> Option<&'static str> {
531            $(
532                $(
533                    impl_html_to_rsx_attribute_match!(
534                        html $fil $extra
535                    );
536                )*
537            )*
538
539            if let Some(name) = crate::map_html_global_attributes_to_rsx(html) {
540                return Some(name);
541            }
542
543            if let Some(name) = crate::map_html_svg_attributes_to_rsx(html) {
544                return Some(name);
545            }
546
547            None
548        }
549
550        #[cfg(feature = "html-to-rsx")]
551        pub fn map_html_element_to_rsx(html: &str) -> Option<&'static str> {
552            $(
553                if html == stringify!($name) {
554                    return Some(stringify!($name));
555                }
556            )*
557
558            None
559        }
560
561        $(
562            impl_element!(
563                $(#[$attr])*
564                $name $namespace {
565                    $(
566                        $(#[$attr_method])*
567                        $fil: $vil $extra,
568                    )*
569                }
570            );
571        )*
572
573        /// This module contains helpers for rust analyzer autocompletion
574        #[doc(hidden)]
575        pub mod completions {
576            /// This helper tells rust analyzer that it should autocomplete the element name with braces.
577            #[allow(non_camel_case_types)]
578            pub enum CompleteWithBraces {
579                $(
580                    $(#[$attr])*
581                    ///
582                    /// ## Usage in rsx
583                    ///
584                    /// ```rust, no_run
585                    /// # use dioxus::prelude::*;
586                    /// # let attributes = vec![];
587                    /// # fn ChildComponent() -> Element { unimplemented!() }
588                    /// # let raw_expression: Element = rsx! {};
589                    /// rsx! {
590                    ///     // Elements are followed by braces that surround any attributes and children for that element
591                    #[doc = concat!("    ", stringify!($name), " {")]
592                    ///         // Add any attributes first
593                    ///         class: "my-class",
594                    ///         "custom-attribute-name": "value",
595                    ///         // Then add any attributes you are spreading into this element
596                    ///         ..attributes,
597                    ///         // Then add any children elements, components, text nodes, or raw expressions
598                    ///         div {}
599                    ///         ChildComponent {}
600                    ///         "child text"
601                    ///         {raw_expression}
602                    ///     }
603                    /// };
604                    /// ```
605                    $name {}
606                ),*
607            }
608        }
609
610        pub(crate) mod extensions {
611            use super::*;
612            $(
613                impl_extension_attributes![$name { $($fil,)* }];
614            )*
615        }
616    };
617}
618
619// Organized in the same order as
620// https://developer.mozilla.org/en-US/docs/Web/HTML/Element
621//
622// Does not include obsolete elements.
623//
624// This namespace represents a collection of modern HTML-5 compatible elements.
625//
626// This list does not include obsolete, deprecated, experimental, or poorly supported elements.
627builder_constructors! {
628    // Document metadata
629
630    /// Build a
631    /// [`<base>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base)
632    /// element.
633    ///
634    base None {
635        href: Uri DEFAULT,
636        target: Target DEFAULT,
637    };
638
639    /// Build a
640    /// [`<head>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head)
641    /// element.
642    head None {};
643
644    /// Build a
645    /// [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link)
646    /// element.
647    link None {
648        // as: Mime,
649        crossorigin: CrossOrigin DEFAULT,
650        href: Uri DEFAULT,
651        hreflang: LanguageTag DEFAULT,
652        media: String DEFAULT, // FIXME media query
653        rel: LinkType DEFAULT,
654        sizes: String DEFAULT, // FIXME
655        title: String DEFAULT, // FIXME
656        r#type: Mime "type",
657        integrity: String DEFAULT,
658        disabled: Bool DEFAULT,
659        referrerpolicy: ReferrerPolicy DEFAULT,
660        fetchpriority: FetchPriority DEFAULT,
661        blocking: Blocking DEFAULT,
662        r#as: As "as",
663    };
664
665    /// Build a
666    /// [`<meta>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta)
667    /// element.
668    meta None {
669        charset: String DEFAULT, // FIXME IANA standard names
670        content: String DEFAULT,
671        http_equiv: String "http-equiv",
672        name: Metadata DEFAULT,
673        property: Metadata DEFAULT,
674    };
675
676    /// Build a
677    /// [`<style>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style)
678    /// element.
679    style None {
680        r#type: Mime "type",
681        media: String DEFAULT, // FIXME media query
682        nonce: Nonce DEFAULT,
683        title: String DEFAULT, // FIXME
684    };
685
686    /// Build a
687    /// [`<title>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/title)
688    /// element.
689    title None { };
690
691    // Sectioning root
692
693    /// Build a
694    /// [`<body>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/body)
695    /// element.
696    body None {};
697
698    // ------------------
699    // Content sectioning
700    // ------------------
701
702    /// Build a
703    /// [`<address>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/address)
704    /// element.
705    address None {};
706
707    /// Build a
708    /// [`<article>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/article)
709    /// element.
710    article None {};
711
712    /// Build a
713    /// [`<aside>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside)
714    /// element.
715    aside None {};
716
717    /// Build a
718    /// [`<footer>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/footer)
719    /// element.
720    footer None {};
721
722    /// Build a
723    /// [`<header>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/header)
724    /// element.
725    header None {};
726
727    /// Build a
728    /// [`<hgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hgroup)
729    /// element.
730    hgroup None {};
731
732    /// Build a
733    /// [`<h1>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h1)
734    /// element.
735    ///
736    /// # About
737    /// - The HTML `<h1>` element is found within the `<body>` tag.
738    /// - Headings can range from `<h1>` to `<h6>`.
739    /// - The most important heading is `<h1>` and the least important heading is `<h6>`.
740    /// - The `<h1>` heading is the first heading in the document.
741    /// - The `<h1>` heading is usually a large bolded font.
742    h1 None {};
743
744    /// Build a
745    /// [`<h2>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h2)
746    /// element.
747    ///
748    /// # About
749    /// - The HTML `<h2>` element is found within the `<body>` tag.
750    /// - Headings can range from `<h1>` to `<h6>`.
751    /// - The most important heading is `<h1>` and the least important heading is `<h6>`.
752    /// - The `<h2>` heading is the second heading in the document.
753    /// - The `<h2>` heading is usually a large bolded font.
754    h2 None {};
755
756    /// Build a
757    /// [`<h3>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h3)
758    /// element.
759    ///
760    /// # About
761    /// - The HTML `<h1>` element is found within the `<body>` tag.
762    /// - Headings can range from `<h1>` to `<h6>`.
763    /// - The most important heading is `<h1>` and the least important heading is `<h6>`.
764    /// - The `<h1>` heading is the first heading in the document.
765    /// - The `<h1>` heading is usually a large bolded font.
766    h3 None {};
767
768    /// Build a
769    /// [`<h4>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h4)
770    /// element.
771    h4 None {};
772
773    /// Build a
774    /// [`<h5>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h5)
775    /// element.
776    h5 None {};
777
778    /// Build a
779    /// [`<h6>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/h6)
780    /// element.
781    h6 None {};
782
783    /// Build a
784    /// [`<main>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/main)
785    /// element.
786    main None {};
787
788    /// Build a
789    /// [`<nav>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/nav)
790    /// element.
791    nav None {};
792
793    /// Build a
794    /// [`<section>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/section)
795    /// element.
796    section None {};
797
798    // Text content
799
800    /// Build a
801    /// [`<blockquote>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote)
802    /// element.
803    blockquote None {
804        cite: Uri DEFAULT,
805    };
806    /// Build a
807    /// [`<dd>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dd)
808    /// element.
809    dd None {};
810
811    /// Build a
812    /// [`<div>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div)
813    /// element.
814    ///
815    /// Part of the HTML namespace. Only works in HTML-compatible renderers
816    ///
817    /// ## Definition and Usage
818    /// - The `<div>` tag defines a division or a section in an HTML document.
819    /// - The `<div>` tag is used as a container for HTML elements - which is then styled with CSS or manipulated with  JavaScript.
820    /// - The `<div>` tag is easily styled by using the class or id attribute.
821    /// - Any sort of content can be put inside the `<div>` tag!
822    ///
823    /// Note: By default, browsers always place a line break before and after the `<div>` element.
824    ///
825    /// ## References:
826    /// - <https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div>
827    /// - <https://www.w3schools.com/tags/tag_div.asp>
828    div None {};
829
830    /// Build a
831    /// [`<dl>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dl)
832    /// element.
833    dl None {};
834
835    /// Build a
836    /// [`<dt>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dt)
837    /// element.
838    dt None {};
839
840    /// Build a
841    /// [`<figcaption>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figcaption)
842    /// element.
843    figcaption None {};
844
845    /// Build a
846    /// [`<figure>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/figure)
847    /// element.
848    figure None {};
849
850    /// Build a
851    /// [`<hr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr)
852    /// element.
853    hr None {};
854
855    /// Build a
856    /// [`<li>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li)
857    /// element.
858    li None {
859        value: isize DEFAULT,
860    };
861
862    /// Build a
863    /// [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol)
864    /// element.
865    ol None {
866        reversed: Bool DEFAULT,
867        start: isize DEFAULT,
868        r#type: OrderedListType "type",
869    };
870
871    /// Build a
872    /// [`<p>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/p)
873    /// element.
874    p None {};
875
876    /// Build a
877    /// [`<pre>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre)
878    /// element.
879    pre None {};
880
881    /// Build a
882    /// [`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul)
883    /// element.
884    ul None {};
885
886
887    // Inline text semantics
888
889    /// Build a
890    /// [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a)
891    /// element.
892    a None {
893        download: String DEFAULT,
894        href: Uri DEFAULT,
895        hreflang: LanguageTag DEFAULT,
896        target: Target DEFAULT,
897        r#type: Mime "type",
898        // ping: SpacedList<Uri>,
899        // rel: SpacedList<LinkType>,
900        ping: SpacedList DEFAULT,
901        rel: SpacedList DEFAULT,
902    };
903
904    /// Build a
905    /// [`<abbr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/abbr)
906    /// element.
907    abbr None {};
908
909    /// Build a
910    /// [`<b>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b)
911    /// element.
912    b None {};
913
914    /// Build a
915    /// [`<bdi>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdi)
916    /// element.
917    bdi None {};
918
919    /// Build a
920    /// [`<bdo>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo)
921    /// element.
922    bdo None {};
923
924    /// Build a
925    /// [`<br>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/br)
926    /// element.
927    br None {};
928
929    /// Build a
930    /// [`<cite>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/cite)
931    /// element.
932    cite None {};
933
934    /// Build a
935    /// [`<code>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/code)
936    /// element.
937    code None {
938        language: String DEFAULT,
939    };
940
941    /// Build a
942    /// [`<data>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data)
943    /// element.
944    data None {
945        value: String DEFAULT,
946    };
947
948    /// Build a
949    /// [`<dfn>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dfn)
950    /// element.
951    dfn None {};
952
953    /// Build a
954    /// [`<em>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em)
955    /// element.
956    em None {};
957
958    /// Build a
959    /// [`<i>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/i)
960    /// element.
961    i None {};
962
963    /// Build a
964    /// [`<kbd>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/kbd)
965    /// element.
966    kbd None {};
967
968    /// Build a
969    /// [`<mark>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark)
970    /// element.
971    mark None {};
972
973    /// Build a
974    /// [`<menu>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu)
975    /// element.
976    menu None {};
977
978    /// Build a
979    /// [`<q>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q)
980    /// element.
981    q None {
982        cite: Uri DEFAULT,
983    };
984
985
986    /// Build a
987    /// [`<rp>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rp)
988    /// element.
989    rp None {};
990
991
992    /// Build a
993    /// [`<rt>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/rt)
994    /// element.
995    rt None {};
996
997
998    /// Build a
999    /// [`<ruby>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ruby)
1000    /// element.
1001    ruby None {};
1002
1003    /// Build a
1004    /// [`<s>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/s)
1005    /// element.
1006    s None {};
1007
1008    /// Build a
1009    /// [`<samp>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/samp)
1010    /// element.
1011    samp None {};
1012
1013    /// Build a
1014    /// [`<small>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/small)
1015    /// element.
1016    small None {};
1017
1018    /// Build a
1019    /// [`<span>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/span)
1020    /// element.
1021    span None {};
1022
1023    /// Build a
1024    /// [`<strong>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/strong)
1025    /// element.
1026    strong None {};
1027
1028    /// Build a
1029    /// [`<sub>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub)
1030    /// element.
1031    sub None {};
1032
1033    /// Build a
1034    /// [`<sup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup)
1035    /// element.
1036    sup None {};
1037
1038    /// Build a
1039    /// [`<time>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time)
1040    /// element.
1041    time None {
1042        datetime: Datetime DEFAULT,
1043    };
1044
1045    /// Build a
1046    /// [`<u>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/u)
1047    /// element.
1048    u None {};
1049
1050    /// Build a
1051    /// [`<var>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/var)
1052    /// element.
1053    var None {};
1054
1055    /// Build a
1056    /// [`<wbr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/wbr)
1057    /// element.
1058    wbr None {};
1059
1060
1061    // Image and multimedia
1062
1063    /// Build a
1064    /// [`<area>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area)
1065    /// element.
1066    area None {
1067        alt: String DEFAULT,
1068        coords: String DEFAULT, // TODO could perhaps be validated
1069        download: Bool DEFAULT,
1070        href: Uri DEFAULT,
1071        hreflang: LanguageTag DEFAULT,
1072        shape: AreaShape DEFAULT,
1073        target: Target DEFAULT,
1074        // ping: SpacedList<Uri>,
1075        // rel: SpacedSet<LinkType>,
1076    };
1077
1078    /// Build a
1079    /// [`<audio>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio)
1080    /// element.
1081    audio None {
1082        autoplay: Bool DEFAULT,
1083        controls: Bool DEFAULT,
1084        crossorigin: CrossOrigin DEFAULT,
1085        muted: Bool DEFAULT,
1086        preload: Preload DEFAULT,
1087        src: Uri DEFAULT,
1088        r#loop: Bool "loop",
1089    };
1090
1091    /// Build a
1092    /// [`<img>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img)
1093    /// element.
1094    img None {
1095        alt: String DEFAULT,
1096        crossorigin: CrossOrigin DEFAULT,
1097        decoding: ImageDecoding DEFAULT,
1098        height: usize DEFAULT,
1099        ismap: Bool DEFAULT,
1100        loading: String DEFAULT,
1101        src: Uri DEFAULT,
1102        srcset: String DEFAULT, // FIXME this is much more complicated
1103        usemap: String DEFAULT, // FIXME should be a fragment starting with '#'
1104        width: usize DEFAULT,
1105        referrerpolicy: String DEFAULT,
1106        sizes: String DEFAULT, // FIXME
1107        elementtiming: String DEFAULT,
1108        fetchpriority: String DEFAULT,
1109        attributionsrc: String DEFAULT,
1110    };
1111
1112    /// Build a
1113    /// [`<map>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map)
1114    /// element.
1115    map None {
1116        name: Id DEFAULT,
1117    };
1118
1119    /// Build a
1120    /// [`<track>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track)
1121    /// element.
1122    track None {
1123        default: Bool DEFAULT,
1124        kind: VideoKind DEFAULT,
1125        label: String DEFAULT,
1126        src: Uri DEFAULT,
1127        srclang: LanguageTag DEFAULT,
1128    };
1129
1130    /// Build a
1131    /// [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video)
1132    /// element.
1133    video None {
1134        autoplay: Bool DEFAULT,
1135        controls: Bool DEFAULT,
1136        crossorigin: CrossOrigin DEFAULT,
1137        height: usize DEFAULT,
1138        r#loop: Bool "loop",
1139        muted: Bool DEFAULT,
1140        preload: Preload DEFAULT,
1141        playsinline: Bool DEFAULT,
1142        poster: Uri DEFAULT,
1143        src: Uri DEFAULT,
1144        width: usize DEFAULT,
1145    };
1146
1147
1148    // Embedded content
1149
1150    /// Build a
1151    /// [`<embed>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed)
1152    /// element.
1153    embed None {
1154        height: usize DEFAULT,
1155        src: Uri DEFAULT,
1156        r#type: Mime "type",
1157        width: usize DEFAULT,
1158    };
1159
1160    /// Build a
1161    /// [`<iframe>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe)
1162    /// element.
1163    iframe None {
1164        allow: FeaturePolicy DEFAULT,
1165        allowfullscreen: Bool DEFAULT,
1166        allowpaymentrequest: Bool DEFAULT,
1167        height: usize DEFAULT,
1168        name: Id DEFAULT,
1169        referrerpolicy: ReferrerPolicy DEFAULT,
1170        src: Uri DEFAULT,
1171        srcdoc: Uri DEFAULT,
1172        width: usize DEFAULT,
1173
1174        margin_width: String "marginWidth",
1175        align: String DEFAULT,
1176        longdesc: String DEFAULT,
1177
1178        scrolling: String DEFAULT,
1179        margin_height: String "marginHeight",
1180        frame_border: String "frameBorder",
1181        // sandbox: SpacedSet<Sandbox>,
1182    };
1183
1184    /// Build a
1185    /// [`<object>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object)
1186    /// element.
1187    object None {
1188        data: Uri DEFAULT,
1189        form: Id DEFAULT,
1190        height: usize DEFAULT,
1191        name: Id DEFAULT,
1192        r#type: Mime "type",
1193        typemustmatch: Bool DEFAULT,
1194        usemap: String DEFAULT, // TODO should be a fragment starting with '#'
1195        width: usize DEFAULT,
1196    };
1197
1198    /// Build a
1199    /// [`<param>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/param)
1200    /// element.
1201    param None {
1202        name: String DEFAULT,
1203        value: String DEFAULT,
1204    };
1205
1206    /// Build a
1207    /// [`<picture>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture)
1208    /// element.
1209    picture None {};
1210
1211    /// Build a
1212    /// [`<source>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source)
1213    /// element.
1214    source None {
1215        src: Uri DEFAULT,
1216        r#type: Mime "type",
1217    };
1218
1219
1220    // Scripting
1221
1222    /// Build a
1223    /// [`<canvas>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas)
1224    /// element.
1225    canvas None {
1226        height: usize DEFAULT,
1227        width: usize DEFAULT,
1228    };
1229
1230    /// Build a
1231    /// [`<noscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript)
1232    /// element.
1233    noscript None {};
1234
1235    /// Build a
1236    /// [`<script>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script)
1237    /// element.
1238    ///
1239    /// The script HTML element is used to embed executable code or data; this is typically used to embed or refer to
1240    /// JavaScript code. The script element can also be used with other languages, such as WebGL's GLSL shader
1241    /// programming language and JSON.
1242    script None {
1243        /// Normal script elements pass minimal information to the window.onerror for scripts which do not pass the
1244        /// standard CORS checks. To allow error logging for sites which use a separate domain for static media, use
1245        /// this attribute. See CORS settings attributes for a more descriptive explanation of its valid arguments.
1246        crossorigin: CrossOrigin DEFAULT,
1247
1248        /// This Boolean attribute is set to indicate to a browser that the script is meant to be executed after the
1249        /// document has been parsed, but before firing DOMContentLoaded.
1250        ///
1251        /// Scripts with the defer attribute will prevent the DOMContentLoaded event from firing until the script has
1252        /// loaded and finished evaluating.
1253        ///
1254        /// ----
1255        /// ### Warning:
1256        ///
1257        /// This attribute must not be used if the src attribute is absent (i.e. for inline scripts), in this
1258        /// case it would have no effect.
1259        ///
1260        /// ----
1261        ///
1262        /// The defer attribute has no effect on module scripts — they defer by default.
1263        /// Scripts with the defer attribute will execute in the order in which they appear in the document.
1264        ///
1265        /// This attribute allows the elimination of parser-blocking JavaScript where the browser would have to load and
1266        /// evaluate scripts before continuing to parse. async has a similar effect in this case.
1267        defer: Bool DEFAULT,
1268        integrity: Integrity DEFAULT,
1269        nomodule: Bool DEFAULT,
1270        nonce: Nonce DEFAULT,
1271        src: Uri DEFAULT,
1272        text: String DEFAULT,
1273        fetchpriority: String DEFAULT,
1274        referrerpolicy: String DEFAULT,
1275
1276        r#async: Bool "async",
1277        r#type: String "type", // TODO could be an enum
1278        r#script: String "script",
1279    };
1280
1281
1282    // Demarcating edits
1283
1284    /// Build a
1285    /// [`<del>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del)
1286    /// element.
1287    del None {
1288        cite: Uri DEFAULT,
1289        datetime: Datetime DEFAULT,
1290    };
1291
1292    /// Build a
1293    /// [`<ins>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins)
1294    /// element.
1295    ins None {
1296        cite: Uri DEFAULT,
1297        datetime: Datetime DEFAULT,
1298    };
1299
1300
1301    // Table content
1302
1303    /// Build a
1304    /// [`<caption>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption)
1305    /// element.
1306    caption None {};
1307
1308    /// Build a
1309    /// [`<col>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col)
1310    /// element.
1311    col None {
1312        span: usize DEFAULT,
1313    };
1314
1315    /// Build a
1316    /// [`<colgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup)
1317    /// element.
1318    colgroup None {
1319        span: usize DEFAULT,
1320    };
1321
1322    /// Build a
1323    /// [`<table>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table)
1324    /// element.
1325    table None {};
1326
1327    /// Build a
1328    /// [`<tbody>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody)
1329    /// element.
1330    tbody None {};
1331
1332    /// Build a
1333    /// [`<td>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td)
1334    /// element.
1335    td None {
1336        colspan: usize DEFAULT,
1337        rowspan: usize DEFAULT,
1338        // headers: SpacedSet<Id>,
1339    };
1340
1341    /// Build a
1342    /// [`<tfoot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot)
1343    /// element.
1344    tfoot None {};
1345
1346    /// Build a
1347    /// [`<th>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th)
1348    /// element.
1349    th None {
1350        abbr: String DEFAULT,
1351        colspan: usize DEFAULT,
1352        rowspan: usize DEFAULT,
1353        scope: TableHeaderScope DEFAULT,
1354        // headers: SpacedSet<Id>,
1355    };
1356
1357    /// Build a
1358    /// [`<thead>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead)
1359    /// element.
1360    thead None {};
1361
1362    /// Build a
1363    /// [`<tr>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr)
1364    /// element.
1365    tr None {};
1366
1367
1368    // Forms
1369
1370    /// Build a
1371    /// [`<button>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button)
1372    /// element.
1373    button None {
1374        autofocus: Bool DEFAULT,
1375        disabled: Bool DEFAULT,
1376        form: Id DEFAULT,
1377        formaction: Uri DEFAULT,
1378        formenctype: FormEncodingType DEFAULT,
1379        formmethod: FormMethod DEFAULT,
1380        formnovalidate: Bool DEFAULT,
1381        formtarget: Target DEFAULT,
1382        name: Id DEFAULT,
1383        popovertarget: String DEFAULT,
1384        popovertargetaction: String DEFAULT,
1385        value: String DEFAULT,
1386        r#type: String "type",
1387    };
1388
1389    /// Build a
1390    /// [`<datalist>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist)
1391    /// element.
1392    datalist None {};
1393
1394    /// Build a
1395    /// [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset)
1396    /// element.
1397    fieldset None {
1398        disabled: Bool DEFAULT,
1399        form: Id DEFAULT,
1400        name: Id DEFAULT,
1401    };
1402
1403    /// Build a
1404    /// [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form)
1405    /// element.
1406    form None {
1407        // accept-charset: SpacedList<CharacterEncoding>,
1408        action: Uri DEFAULT,
1409        autocomplete: OnOff DEFAULT,
1410        enctype: FormEncodingType DEFAULT,
1411        method: FormMethod DEFAULT,
1412        name: Id DEFAULT,
1413        novalidate: Bool DEFAULT,
1414        target: Target DEFAULT,
1415    };
1416
1417    /// Build a
1418    /// [`<input>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
1419    /// element.
1420    input None {
1421        accept: String DEFAULT,
1422        alt: String DEFAULT,
1423        autocomplete: String DEFAULT,
1424        autofocus: Bool DEFAULT,
1425        capture: String DEFAULT,
1426        checked: Bool DEFAULT,
1427        directory: Bool "webkitdirectory",
1428        disabled: Bool DEFAULT,
1429        form: Id DEFAULT,
1430        formaction: Uri DEFAULT,
1431        formenctype: FormEncodingType DEFAULT,
1432        formmethod: FormDialogMethod DEFAULT,
1433        formnovalidate: Bool DEFAULT,
1434        formtarget: Target DEFAULT,
1435        height: isize DEFAULT,
1436        initial_checked: Bool DEFAULT,
1437        list: Id DEFAULT,
1438        max: String DEFAULT,
1439        maxlength: usize DEFAULT,
1440        min: String DEFAULT,
1441        minlength: usize DEFAULT,
1442        multiple: Bool DEFAULT,
1443        name: Id DEFAULT,
1444        pattern: String DEFAULT,
1445        popovertarget: String DEFAULT,
1446        popovertargetaction: String DEFAULT,
1447        placeholder: String DEFAULT,
1448        readonly: Bool DEFAULT,
1449        required: Bool DEFAULT,
1450        size: usize DEFAULT,
1451        spellcheck: Bool DEFAULT,
1452        src: Uri DEFAULT,
1453        step: String DEFAULT,
1454        tabindex: usize DEFAULT,
1455        width: isize DEFAULT,
1456
1457        /// The type of input
1458        ///
1459        /// Here are the different input types you can use in HTML:
1460        ///
1461        /// - `button`
1462        /// - `checkbox`
1463        /// - `color`
1464        /// - `date`
1465        /// - `datetime-local`
1466        /// - `email`
1467        /// - `file`
1468        /// - `hidden`
1469        /// - `image`
1470        /// - `month`
1471        /// - `number`
1472        /// - `password`
1473        /// - `radio`
1474        /// - `range`
1475        /// - `reset`
1476        /// - `search`
1477        /// - `submit`
1478        /// - `tel`
1479        /// - `text`
1480        /// - `time`
1481        /// - `url`
1482        /// - `week`
1483
1484        r#type: InputType "type",
1485        // value: String,
1486        value: String volatile,
1487        initial_value: String DEFAULT,
1488    };
1489
1490    /// Build a
1491    /// [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label)
1492    /// element.
1493    label None {
1494        form: Id DEFAULT,
1495        r#for: Id "for",
1496    };
1497
1498    /// Build a
1499    /// [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend)
1500    /// element.
1501    legend None {};
1502
1503    /// Build a
1504    /// [`<meter>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter)
1505    /// element.
1506    meter None {
1507        value: isize DEFAULT,
1508        min: isize DEFAULT,
1509        max: isize DEFAULT,
1510        low: isize DEFAULT,
1511        high: isize DEFAULT,
1512        optimum: isize DEFAULT,
1513        form: Id DEFAULT,
1514    };
1515
1516    /// Build a
1517    /// [`<optgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup)
1518    /// element.
1519    optgroup None {
1520        disabled: Bool DEFAULT,
1521        label: String DEFAULT,
1522    };
1523
1524    /// Build a
1525    /// [`<option>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)
1526    /// element.
1527    option None {
1528        disabled: Bool DEFAULT,
1529        label: String DEFAULT,
1530
1531
1532        value: String DEFAULT,
1533
1534        selected: Bool volatile,
1535        initial_selected: Bool DEFAULT,
1536    };
1537
1538    /// Build a
1539    /// [`<output>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output)
1540    /// element.
1541    output None {
1542        form: Id DEFAULT,
1543        name: Id DEFAULT,
1544        // r#for: SpacedSet<Id>,
1545    };
1546
1547    /// Build a
1548    /// [`<progress>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress)
1549    /// element.
1550    progress None {
1551        max: f64 DEFAULT,
1552        value: f64 DEFAULT,
1553    };
1554
1555    /// Build a
1556    /// [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select)
1557    /// element.
1558    select None {
1559        // defined below
1560        // value: String,
1561        autocomplete: String DEFAULT,
1562        autofocus: Bool DEFAULT,
1563        disabled: Bool DEFAULT,
1564        form: Id DEFAULT,
1565        multiple: Bool DEFAULT,
1566        name: Id DEFAULT,
1567        required: Bool DEFAULT,
1568        size: usize DEFAULT,
1569        value: String volatile,
1570    };
1571
1572    /// Build a
1573    /// [`<textarea>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea)
1574    /// element.
1575    textarea None {
1576        autocomplete: OnOff DEFAULT,
1577        autofocus: Bool DEFAULT,
1578        cols: usize DEFAULT,
1579        disabled: Bool DEFAULT,
1580        form: Id DEFAULT,
1581        maxlength: usize DEFAULT,
1582        minlength: usize DEFAULT,
1583        name: Id DEFAULT,
1584        placeholder: String DEFAULT,
1585        readonly: Bool DEFAULT,
1586        required: Bool DEFAULT,
1587        rows: usize DEFAULT,
1588        spellcheck: BoolOrDefault DEFAULT,
1589        wrap: Wrap DEFAULT,
1590        value: String volatile,
1591
1592        initial_value: String DEFAULT,
1593    };
1594
1595
1596    // Interactive elements
1597
1598    /// Build a
1599    /// [`<details>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details)
1600    /// element.
1601    details None {
1602        open: Bool DEFAULT,
1603    };
1604
1605    /// Build dialog
1606    /// [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog)
1607    /// element.
1608    dialog None {
1609        open: Bool DEFAULT,
1610    };
1611
1612    /// Build a
1613    /// [`<summary>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary)
1614    /// element.
1615    summary None {};
1616
1617    // Web components
1618
1619    /// Build a
1620    /// [`<slot>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot)
1621    /// element.
1622    slot None {
1623        name: String DEFAULT,
1624    };
1625
1626    /// Build a
1627    /// [`<template>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template)
1628    /// element.
1629    template None {};
1630
1631    // SVG components
1632    /// Build a
1633    /// [`<svg>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg)
1634    /// element.
1635    svg "http://www.w3.org/2000/svg" { };
1636
1637
1638    // /// Build a
1639    // /// [`<a>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/a)
1640    // /// element.
1641    // a "http://www.w3.org/2000/svg" {};
1642
1643    /// Build a
1644    /// [`<animate>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animate)
1645    /// element.
1646    animate "http://www.w3.org/2000/svg" {};
1647
1648    /// Build a
1649    /// [`<animateMotion>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateMotion)
1650    /// element.
1651    animateMotion "http://www.w3.org/2000/svg" {};
1652
1653    /// Build a
1654    /// [`<animateTransform>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateTransform)
1655    /// element.
1656    animateTransform "http://www.w3.org/2000/svg" {};
1657
1658    /// Build a
1659    /// [`<circle>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle)
1660    /// element.
1661    circle "http://www.w3.org/2000/svg" {};
1662
1663    /// Build a
1664    /// [`<clipPath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/clipPath)
1665    /// element.
1666    clipPath "http://www.w3.org/2000/svg" {};
1667
1668    /// Build a
1669    /// [`<defs>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs)
1670    /// element.
1671    defs "http://www.w3.org/2000/svg" {};
1672
1673    /// Build a
1674    /// [`<desc>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/desc)
1675    /// element.
1676    desc "http://www.w3.org/2000/svg" {};
1677
1678    /// Build a
1679    /// [`<discard>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/discard)
1680    /// element.
1681    discard "http://www.w3.org/2000/svg" {};
1682
1683    /// Build a
1684    /// [`<ellipse>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse)
1685    /// element.
1686    ellipse "http://www.w3.org/2000/svg" {};
1687
1688    /// Build a
1689    /// [`<feBlend>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feBlend)
1690    /// element.
1691    feBlend "http://www.w3.org/2000/svg" {};
1692
1693    /// Build a
1694    /// [`<feColorMatrix>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feColorMatrix)
1695    /// element.
1696    feColorMatrix "http://www.w3.org/2000/svg" {};
1697
1698    /// Build a
1699    /// [`<feComponentTransfer>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComponentTransfer)
1700    /// element.
1701    feComponentTransfer "http://www.w3.org/2000/svg" {};
1702
1703    /// Build a
1704    /// [`<feComposite>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComposite)
1705    /// element.
1706    feComposite "http://www.w3.org/2000/svg" {};
1707
1708    /// Build a
1709    /// [`<feConvolveMatrix>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feConvolveMatrix)
1710    /// element.
1711    feConvolveMatrix "http://www.w3.org/2000/svg" {};
1712
1713    /// Build a
1714    /// [`<feDiffuseLighting>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDiffuseLighting)
1715    /// element.
1716    feDiffuseLighting "http://www.w3.org/2000/svg" {};
1717
1718    /// Build a
1719    /// [`<feDisplacementMap>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDisplacementMap)
1720    /// element.
1721    feDisplacementMap "http://www.w3.org/2000/svg" {};
1722
1723    /// Build a
1724    /// [`<feDistantLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDistantLight)
1725    /// element.
1726    feDistantLight "http://www.w3.org/2000/svg" {};
1727
1728    /// Build a
1729    /// [`<feDropShadow>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDropShadow)
1730    /// element.
1731    feDropShadow "http://www.w3.org/2000/svg" {};
1732
1733    /// Build a
1734    /// [`<feFlood>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFlood)
1735    /// element.
1736    feFlood "http://www.w3.org/2000/svg" {};
1737
1738    /// Build a
1739    /// [`<feFuncA>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncA)
1740    /// element.
1741    feFuncA "http://www.w3.org/2000/svg" {};
1742
1743    /// Build a
1744    /// [`<feFuncB>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncB)
1745    /// element.
1746    feFuncB "http://www.w3.org/2000/svg" {};
1747
1748    /// Build a
1749    /// [`<feFuncG>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncG)
1750    /// element.
1751    feFuncG "http://www.w3.org/2000/svg" {};
1752
1753    /// Build a
1754    /// [`<feFuncR>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncR)
1755    /// element.
1756    feFuncR "http://www.w3.org/2000/svg" {};
1757
1758    /// Build a
1759    /// [`<feGaussianBlur>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feGaussianBlur)
1760    /// element.
1761    feGaussianBlur "http://www.w3.org/2000/svg" {};
1762
1763    /// Build a
1764    /// [`<feImage>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feImage)
1765    /// element.
1766    feImage "http://www.w3.org/2000/svg" {};
1767
1768    /// Build a
1769    /// [`<feMerge>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMerge)
1770    /// element.
1771    feMerge "http://www.w3.org/2000/svg" {};
1772
1773    /// Build a
1774    /// [`<feMergeNode>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMergeNode)
1775    /// element.
1776    feMergeNode "http://www.w3.org/2000/svg" {};
1777
1778    /// Build a
1779    /// [`<feMorphology>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMorphology)
1780    /// element.
1781    feMorphology "http://www.w3.org/2000/svg" {};
1782
1783    /// Build a
1784    /// [`<feOffset>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feOffset)
1785    /// element.
1786    feOffset "http://www.w3.org/2000/svg" {};
1787
1788    /// Build a
1789    /// [`<fePointLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/fePointLight)
1790    /// element.
1791    fePointLight "http://www.w3.org/2000/svg" {};
1792
1793    /// Build a
1794    /// [`<feSpecularLighting>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpecularLighting)
1795    /// element.
1796    feSpecularLighting "http://www.w3.org/2000/svg" {};
1797
1798    /// Build a
1799    /// [`<feSpotLight>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpotLight)
1800    /// element.
1801    feSpotLight "http://www.w3.org/2000/svg" {};
1802
1803    /// Build a
1804    /// [`<feTile>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTile)
1805    /// element.
1806    feTile "http://www.w3.org/2000/svg" {};
1807
1808    /// Build a
1809    /// [`<feTurbulence>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTurbulence)
1810    /// element.
1811    feTurbulence "http://www.w3.org/2000/svg" {};
1812
1813    /// Build a
1814    /// [`<filter>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/filter)
1815    /// element.
1816    filter "http://www.w3.org/2000/svg" {};
1817
1818    /// Build a
1819    /// [`<foreignObject>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject)
1820    /// element.
1821    foreignObject "http://www.w3.org/2000/svg" {};
1822
1823    /// Build a
1824    /// [`<g>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g)
1825    /// element.
1826    g "http://www.w3.org/2000/svg" {};
1827
1828    /// Build a
1829    /// [`<hatch>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatch)
1830    /// element.
1831    hatch "http://www.w3.org/2000/svg" {};
1832
1833    /// Build a
1834    /// [`<hatchpath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatchpath)
1835    /// element.
1836    hatchpath "http://www.w3.org/2000/svg" {};
1837
1838    /// Build a
1839    /// [`<image>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/image)
1840    /// element.
1841    image "http://www.w3.org/2000/svg" {};
1842
1843    /// Build a
1844    /// [`<line>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line)
1845    /// element.
1846    line "http://www.w3.org/2000/svg" {};
1847
1848    /// Build a
1849    /// [`<linearGradient>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/linearGradient)
1850    /// element.
1851    linearGradient "http://www.w3.org/2000/svg" {};
1852
1853    /// Build a
1854    /// [`<marker>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/marker)
1855    /// element.
1856    marker "http://www.w3.org/2000/svg" {};
1857
1858    /// Build a
1859    /// [`<mask>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mask)
1860    /// element.
1861    mask "http://www.w3.org/2000/svg" {};
1862
1863    /// Build a
1864    /// [`<metadata>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/metadata)
1865    /// element.
1866    metadata "http://www.w3.org/2000/svg" {};
1867
1868    /// Build a
1869    /// [`<mpath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mpath)
1870    /// element.
1871    mpath "http://www.w3.org/2000/svg" {};
1872
1873    /// Build a
1874    /// [`<path>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path)
1875    /// element.
1876    path "http://www.w3.org/2000/svg" {};
1877
1878    /// Build a
1879    /// [`<pattern>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/pattern)
1880    /// element.
1881    pattern "http://www.w3.org/2000/svg" {};
1882
1883    /// Build a
1884    /// [`<polygon>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon)
1885    /// element.
1886    polygon "http://www.w3.org/2000/svg" {};
1887
1888    /// Build a
1889    /// [`<polyline>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline)
1890    /// element.
1891    polyline "http://www.w3.org/2000/svg" {};
1892
1893    /// Build a
1894    /// [`<radialGradient>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/radialGradient)
1895    /// element.
1896    radialGradient "http://www.w3.org/2000/svg" {};
1897
1898    /// Build a
1899    /// [`<rect>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/rect)
1900    /// element.
1901    rect "http://www.w3.org/2000/svg" {};
1902
1903    // /// Build a
1904    // /// [`<script>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/script)
1905    // /// element.
1906    // script "http://www.w3.org/2000/svg" {};
1907
1908    /// Build a
1909    /// [`<set>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/set)
1910    /// element.
1911    set "http://www.w3.org/2000/svg" {};
1912
1913    /// Build a
1914    /// [`<stop>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/stop)
1915    /// element.
1916    stop "http://www.w3.org/2000/svg" {};
1917
1918    // /// Build a
1919    // /// [`<style>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/style)
1920    // /// element.
1921    // style "http://www.w3.org/2000/svg" {};
1922
1923    // /// Build a
1924    // /// [`<svg>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg)
1925    // /// element.
1926    // svg "http://www.w3.org/2000/svg" {};
1927
1928    /// Build a
1929    /// [`<switch>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/switch)
1930    /// element.
1931    switch "http://www.w3.org/2000/svg" {};
1932
1933    /// Build a
1934    /// [`<symbol>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/symbol)
1935    /// element.
1936    symbol "http://www.w3.org/2000/svg" {};
1937
1938    /// Build a
1939    /// [`<text>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text)
1940    /// element.
1941    text "http://www.w3.org/2000/svg" {};
1942
1943    /// Build a
1944    /// [`<textPath>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/textPath)
1945    /// element.
1946    textPath "http://www.w3.org/2000/svg" {};
1947
1948    // /// Build a
1949    // /// [`<title>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/title)
1950    // /// element.
1951    // title "http://www.w3.org/2000/svg" {};
1952
1953    /// Build a
1954    /// [`<tspan>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/tspan)
1955    /// element.
1956    tspan "http://www.w3.org/2000/svg" {};
1957
1958    /// Build a
1959    /// [`<view>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/view)
1960    /// element.
1961    view "http://www.w3.org/2000/svg" {};
1962
1963    // /// Build a
1964    // /// [`<use>`](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use)
1965    // /// element.
1966    r#use ["use", "http://www.w3.org/2000/svg"] {
1967        href: String DEFAULT,
1968    };
1969
1970    // MathML elements
1971
1972    /// Build a
1973    /// [`<annotation>`](https://w3c.github.io/mathml-core/#dfn-annotation)
1974    /// element.
1975    annotation "http://www.w3.org/1998/Math/MathML" {
1976            encoding: String DEFAULT,
1977    };
1978
1979    /// Build a
1980    /// [`<annotation-xml>`](https://w3c.github.io/mathml-core/#dfn-annotation-xml)
1981    /// element.
1982    annotationXml ["annotation-xml", "http://www.w3.org/1998/Math/MathML"] {
1983            encoding: String DEFAULT,
1984    };
1985
1986    /// Build a
1987    /// [`<merror>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/merror)
1988    /// element.
1989    merror "http://www.w3.org/1998/Math/MathML" {};
1990
1991    /// Build a
1992    /// [`<math>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/math)
1993    /// element.
1994    math "http://www.w3.org/1998/Math/MathML" {
1995        display: String DEFAULT,
1996    };
1997
1998    /// Build a
1999    /// [`<mfrac>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mfrac)
2000    /// element.
2001    mfrac "http://www.w3.org/1998/Math/MathML" {
2002        linethickness: usize DEFAULT,
2003    };
2004
2005    /// Build a
2006    /// [`<mi>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mi)
2007    /// element.
2008    mi "http://www.w3.org/1998/Math/MathML" {
2009        mathvariant: String DEFAULT,
2010    };
2011
2012    /// Build a
2013    /// [`<mmultiscripts>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mmultiscripts)
2014    /// element.
2015    mmultiscripts "http://www.w3.org/1998/math/mathml" {};
2016
2017    /// Build a
2018    /// [`<mn>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mn)
2019    /// element.
2020    mn "http://www.w3.org/1998/Math/MathML" {};
2021
2022    /// Build a
2023    /// [`<mo>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo)
2024    /// element.
2025    mo "http://www.w3.org/1998/Math/MathML" {
2026        fence: Bool DEFAULT,
2027        largeop: Bool DEFAULT,
2028        lspace: usize DEFAULT,
2029        maxsize: usize DEFAULT,
2030        minsize: usize DEFAULT,
2031        movablelimits: Bool DEFAULT,
2032        rspace: usize DEFAULT,
2033        separator: Bool DEFAULT,
2034        stretchy: Bool DEFAULT,
2035        symmetric: Bool DEFAULT,
2036    };
2037
2038    /// Build a
2039    /// [`<mover>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mover)
2040    /// element.
2041    mover "http://www.w3.org/1998/Math/MathML" {
2042        accent: Bool DEFAULT,
2043    };
2044
2045    /// Build a
2046    /// [`<mpadded>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mpadded)
2047    /// element.
2048    mpadded "http://www.w3.org/1998/Math/MathML" {
2049        depth: usize DEFAULT,
2050        height: usize DEFAULT,
2051        lspace: usize DEFAULT,
2052        voffset: usize DEFAULT,
2053        width: usize DEFAULT,
2054    };
2055
2056    /// Build a
2057    /// [`<mphantom>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mphantom)
2058    /// element.
2059    mphantom "http://www.w3.org/1998/Math/MathML" {};
2060
2061    /// Build a
2062    /// [`<mprescripts>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mprescripts)
2063    /// element.
2064    mprescripts "http://www.w3.org/1998/Math/MathML" {};
2065
2066    /// Build a
2067    /// [`<mroot>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mroot)
2068    /// element.
2069    mroot "http://www.w3.org/1998/Math/MathML" {};
2070
2071    /// Build a
2072    /// [`<mrow>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mrow)
2073    /// element.
2074    mrow "http://www.w3.org/1998/Math/MathML" {
2075
2076    };
2077
2078    /// Build a
2079    /// [`<ms>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/ms)
2080    /// element.
2081    ms "http://www.w3.org/1998/Math/MathML" {
2082        lquote: String DEFAULT,
2083        rquote: String DEFAULT,
2084    };
2085
2086    /// Build a
2087    /// [`<mspace>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mspace)
2088    /// element.
2089    mspace "http://www.w3.org/1998/Math/MathML" {
2090        depth: usize DEFAULT,
2091        height: usize DEFAULT,
2092        width: usize DEFAULT,
2093    };
2094
2095    /// Build a
2096    /// [`<msqrt>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msqrt)
2097    /// element.
2098    msqrt "http://www.w3.org/1998/Math/MathML" {};
2099
2100    /// Build a
2101    /// [`<mstyle>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mstyle)
2102    /// element.
2103    mstyle "http://www.w3.org/1998/Math/MathML" {};
2104
2105    /// Build a
2106    /// [`<msub>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msub)
2107    /// element.
2108    msub "http://www.w3.org/1998/Math/MathML" {};
2109
2110    /// Build a
2111    /// [`<msubsup>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msubsup)
2112    /// element.
2113    msubsup "http://www.w3.org/1998/Math/MathML" {};
2114
2115    /// Build a
2116    /// [`<msup>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/msup)
2117    /// element.
2118    msup "http://www.w3.org/1998/Math/MathML" {};
2119
2120    /// Build a
2121    /// [`<mtable>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtable)
2122    /// element.
2123    mtable "http://www.w3.org/1998/Math/MathML" {};
2124
2125    /// Build a
2126    /// [`<mtd>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtd)
2127    /// element.
2128    mtd "http://www.w3.org/1998/Math/MathML" {
2129        columnspan: usize DEFAULT,
2130        rowspan: usize DEFAULT,
2131    };
2132
2133    /// Build a
2134    /// [`<mtext>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtext)
2135    /// element.
2136    mtext "http://www.w3.org/1998/Math/MathML" {};
2137
2138    /// Build a
2139    /// [`<mtr>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mtr)
2140    /// element.
2141    mtr "http://www.w3.org/1998/Math/MathML" {};
2142
2143    /// Build a
2144    /// [`<munder>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/munder)
2145    /// element.
2146    munder "http://www.w3.org/1998/Math/MathML" {
2147        accentunder: Bool DEFAULT,
2148    };
2149
2150    /// Build a
2151    /// [`<munderover>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/munderover)
2152    /// element.
2153    munderover "http://www.w3.org/1998/Math/MathML" {
2154        accent: Bool DEFAULT,
2155        accentunder: Bool DEFAULT,
2156    };
2157
2158    /// Build a
2159    /// [`<semantics>`](https://developer.mozilla.org/en-US/docs/Web/MathML/Element/semantics)
2160    /// element.
2161    semantics "http://www.w3.org/1998/Math/MathML" {
2162        encoding: String DEFAULT,
2163    };
2164}