Inhaltskategorien

Die meisten HTML-Elemente gehören zu einer oder mehreren Inhaltskategorien – diese Kategorien gruppieren Elemente, die gemeinsame Merkmale teilen. Dies ist eine lose Gruppierung (es wird tatsächlich keine Beziehung zwischen Elementen dieser Kategorien geschaffen), aber sie helfen dabei, das gemeinsame Verhalten der Kategorien und ihre zugehörigen Regeln zu definieren und zu beschreiben. Es ist möglich, dass Elemente (wie <track>) nicht Mitglied irgendeiner dieser Kategorien sind.

Die Inhaltskategorien werden verwendet, um das Inhaltsmodell von Elementen zu definieren, also was jedes Element als Nachkommen haben kann. Beispielsweise kann ein <p>-Element nur Phrasierungsinhalt enthalten, während ein <div>-Element Flussinhalt enthalten kann.

Es gibt sieben Hauptinhaltskategorien, die im folgenden Venn-Diagramm zusammengefasst sind:

Ein Venn-Diagramm, das zeigt, wie die verschiedenen Inhaltskategorien miteinander in Beziehung stehen. Die folgenden Abschnitte erklären diese Beziehungen im Text.

Hinweis: Eine ausführlichere Diskussion dieser Inhaltskategorien und ihrer vergleichenden Funktionalitäten geht über den Umfang dieses Artikels hinaus; falls Sie daran interessiert sind, lesen Sie bitte die relevanten Teile der HTML-Spezifikation.

Metadateninhalt

Elemente, die zur Kategorie Metadateninhalt gehören, ändern die Darstellung oder das Verhalten des restlichen Dokuments, richten Links zu anderen Dokumenten ein oder vermitteln andere außerhalb des Dokuments befindliche Informationen. Alles im <head>, einschließlich <title>, <link>, <script>, <style> und dem weniger verwendeten <base>, ist Metadateninhalt. Es gibt ein <meta>-Element für Metadaten, die durch diese anderen Elemente nicht dargestellt werden können.

Die Metadaten-Elemente sind:

Einige dieser Elemente gehören mehr als einer Inhaltskategorie an. Zum Beispiel ist <script> Mitglied der Kategorien Metadaten, Fluss- und Phrasierungsinhalt und ist ein skriptunterstützendes Element; <script> kann verwendet werden, wo Metadateninhalt, Phrasierungsinhalt oder skriptunterstützende Elemente erwartet werden.

Flussinhalt

Flussinhalt ist eine breite Kategorie, die die meisten Elemente umfasst, die innerhalb des <body>-Elements platziert werden können, einschließlich überschriftenbasierter Elemente, Abschnittselemente, Phrasierungselemente, Einbettungselemente, interaktiver Elemente und formularbezogener Elemente. Es enthält auch Textknoten (aber nicht jene, die nur aus Leerzeichen bestehen).

Die Flusselemente sind:

Einige andere Elemente gehören zu dieser Kategorie, aber nur, wenn eine bestimmte Bedingung erfüllt ist:

Abschnittsinhalt

Abschnittsinhalt, eine Unterkategorie des Flussinhalts, erstellt einen Abschnitt in der aktuellen Gliederung, der den Geltungsbereich von <header>- und <footer>-Elementen definiert.

Die Abschnittselemente sind:

Überschriftselemente

Überschriftselemente, eine Unterkategorie des Flussinhalts, definieren den Titel eines Abschnitts. Diese Definition gilt sowohl für Abschnitte, die durch explizite Abschnittsinhalt-Elemente markiert sind, als auch für solche, die implizit durch den Überschrifteninhalt selbst definiert sind.

Die Überschriftselemente sind:

Hinweis: Obwohl wahrscheinlich Überschrifteninhalt enthalten, ist das <header>-Element selbst kein Überschrifteninhalt.

Phrasierungsinhalt

Phrasierungsinhalt, eine Unterkategorie des Flussinhalts, bezieht sich auf den Text und das Markup innerhalb eines Dokuments. Folgen von Phrasierungsinhalt ergeben Absätze.

Die Phrasierungselemente sind:

Einige andere Elemente gehören zu dieser Kategorie, aber nur, wenn eine bestimmte Bedingung erfüllt ist:

  • <a>, wenn es nur Phrasierungsinhalt enthält
  • <area>, wenn es ein Nachfahre eines <map>-Elements ist
  • <del>, wenn es nur Phrasierungsinhalt enthält
  • <ins>, wenn es nur Phrasierungsinhalt enthält
  • <link>, wenn das itemprop-Attribut vorhanden ist
  • <map>, wenn es nur Phrasierungsinhalt enthält
  • <meta>, wenn das itemprop-Attribut vorhanden ist

Eingebetteter Inhalt

Eingebetteter Inhalt, eine Unterkategorie des Flussinhalts, importiert eine andere Ressource oder fügt Inhalte aus einer anderen Markup-Sprache oder einem anderen Namensraum in das Dokument ein.

Die eingebetteten Inhaltselemente sind:

Interaktiver Inhalt

Interaktiver Inhalt, eine Unterkategorie des Flussinhalts, umfasst Elemente, die speziell für die Interaktion mit Benutzern konzipiert sind.

Die interaktiven Inhaltselemente sind:

Einige Elemente gehören zu dieser Kategorie nur unter spezifischen Bedingungen:

Greifbarer Inhalt

Greifbarer Inhalt ist Inhalt, der weder leer noch verborgen ist; es ist Inhalt, der gerendert und substanziell ist. Greifbarer Inhalt wird nicht zur Definition von Inhaltsmodellen verwendet, sondern zur Festlegung einer allgemeinen Regel: Elemente, deren Inhaltsmodell beliebigen Flussinhalt oder Phrasierungsinhalt zulässt, sollten mindestens einen Knoten in ihren Inhalten haben, der greifbarer Inhalt ist und der das hidden-Attribut nicht spezifiziert hat.

Die greifbaren Elemente sind:

Einige Elemente gehören zu dieser Kategorie nur unter spezifischen Bedingungen:

  • <audio>, wenn das controls-Attribut vorhanden ist
  • <dl>, wenn die Kinder des Elements mindestens eine Name-Wert-Gruppe enthalten
  • <input>, wenn das type-Attribut nicht im verborgenen Zustand ist
  • <ol>, wenn es Kinder enthält, die mindestens ein <li>-Element einschließen
  • <ul>, wenn es Kinder enthält, die mindestens ein <li>-Element einschließen

Skriptunterstützende Elemente

Skriptunterstützende Elemente sind Elemente, die nicht direkt zum gerenderten Output eines Dokuments beitragen. Stattdessen dienen sie zur Unterstützung von Skripten, indem sie entweder Skriptcode direkt enthalten oder spezifizieren oder Daten bereitstellen, die von Skripten verwendet werden. Fast alle Elemente, einschließlich solcher, die nur bestimmte Elemente aufnehmen (wie <ul>, das <li>-Elemente aufnimmt), können skriptunterstützende Elemente enthalten.

Die skriptunterstützenden Elemente sind:

Formularassoziierter Inhalt

Formularassoziierter Inhalt ist eine Unterkategorie des Flussinhalts, die aus Elementen besteht, die einen Formulareigentümer haben und überall dort verwendet werden können, wo Flussinhalt erwartet wird. Ein Formulareigentümer ist entweder das enthaltende <form>-Element oder das <form>, dessen id im form-Attribut des Elements angegeben ist.

Die formularassoziierten Elemente sind:

Diese Kategorie enthält mehrere Unterkategorien:

aufgelistet

Elemente, die in den Sammlungen HTMLFormElement.elements und HTMLFieldSetElement.elements aufgelistet sind. Beinhaltet <button>, <fieldset>, <input>, <object>, <output>, <select>, und <textarea>.

submit-fähig

Elemente, die zur Konstruktion des Formulardatensatzes verwendet werden können, wenn das Formular abgesendet wird. Beinhaltet <button>, <input>, <select>, und <textarea>.

zurücksetzbar

Elemente, die betroffen sein können, wenn ein Formular zurückgesetzt wird. Beinhaltet <input>, <output>, <select>, und <textarea>.

autocapitalize-und-autocorrect-vererbend

Elemente, die die Attribute autocapitalize und autocorrect von ihrem Formulareigentümer erben. Beinhaltet <button>, <fieldset>, <input>, <output>, <select>, und <textarea>.

beschriftbar

Elemente, die mit <label>-Elementen assoziiert werden können. Beinhaltet <button>, <input> (alle Typen außer hidden), <meter>, <output>, <progress>, <select>, und <textarea>.

Transparente Inhaltsmodell

Wenn ein Element ein transparentes Inhaltsmodell hat, müssen seine Inhalte so strukturiert sein, dass sie gültiges HTML wären, auch wenn das transparente Element entfernt und durch die Kindelemente ersetzt wird.

Zum Beispiel sind die <del>- und <ins>-Elemente transparent:

html
<p><del>Shopping</del> <ins>Returns</ins> list</p>
<ul>
  <del>
    <li>Oranges</li>
    <li>Toilet paper</li>
  </del>
  <li>Toothpaste</li>
</ul>

Wenn diese Elemente entfernt würden, wäre dieses Fragment immer noch gültiges HTML (wenn auch nicht korrektes Englisch).

html
<p>Shopping Returns list</p>
<ul>
  <li>Oranges</li>
  <li>Toilet paper</li>
  <li>Toothpaste</li>
</ul>