1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
//! Every HTML element is a member of one or more content categories — these //! categories group elements that share common characteristics. This is a loose //! grouping (it doesn't actually create a relationship among elements of these //! categories), but they help define and describe the categories' shared //! behavior and their associated rules, especially when you come upon their //! intricate details. It's also possible for elements to not be a member of any //! of these categories. //! //! There are three types of content categories: //! //! 1. Main content categories, which describe common rules shared by many //! elements. //! 2. Form-related content categories, which describe rules common to //! form-related elements. //! 3. Specific content categories, which describe rare categories shared //! only by a few elements, sometimes only in a specific context. use crate::interfaces::node::Child; /// Elements belonging to the metadata content category modify the presentation /// or the behavior of the rest of the document, set up links to other /// documents, or convey other out of band information. pub trait MetadataContent: Child {} /// Elements belonging to the flow content category typically contain text or /// embedded content. pub trait FlowContent: Child {} /// Elements belonging to the sectioning content model create a section in the /// current outline that defines the scope of <header> elements, <footer> /// elements, and heading content. pub trait SectioningContent: Child {} /// Heading content defines the title of a section, whether marked by an /// explicit sectioning content element, or implicitly defined by the heading /// content itself. pub trait HeadingContent: Child {} /// Phrasing content defines the text and the mark-up it contains. Runs of /// phrasing content make up paragraphs. pub trait PhrasingContent: Child {} /// Embedded content imports another resource or inserts content from another /// mark-up language or namespace into the document. pub trait EmbeddedContent: Child {} /// Interactive content includes elements that are specifically designed for /// user interaction. pub trait InteractiveContent: Child {} /// Form-associated content comprises elements that have a form owner, exposed /// by a form attribute. A form owner is either the containing <form> element or /// the element whose id is specified in the form attribute. pub trait FormAssociatedContent: Child {} /// Elements that are listed in the form.elements and fieldset.elements IDL /// collections. pub trait ListedContent: Child {} /// Elements that can be associated with <label> elements. pub trait LabelableContent: Child {} /// Elements that can be used for constructing the form data set when the form /// is submitted. pub trait SubmittableContent: Child {} /// Elements that can be affected when a form is reset. pub trait ResettableContent: Child {} /// Content is palpable when it's neither empty or hidden; it is content that is /// rendered and is substantive. Elements whose model is flow content or /// phrasing content should have at least one node which is palpable. pub trait PalpableContent: Child {} /// Script-supporting elements are elements which don't directly contribute to /// the rendered output of a document. Instead, they serve to support scripts, /// either by containing or specifying script code directly, or by specifying /// data that will be used by scripts. pub trait ScriptSupportingContent: Child {}