Inhaltskategorien

Die meisten HTML-Elemente gehören zu einer oder mehreren Inhaltskategorien – diese Kategorien gruppieren Elemente, die gemeinsame Merkmale aufweisen. Dabei handelt es sich um eine lose Gruppierung (sie schafft tatsächlich keine Beziehung zwischen den Elementen dieser Kategorien), aber sie helfen, das gemeinsame Verhalten der Kategorien und deren zugehörige 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, mit anderen Worten, was jedes Element als Nachkommen enthalten kann. Beispielsweise kann ein <p>-Element nur Phrasierungsinhalte enthalten, während ein <div>-Element Flussinhalte enthalten kann.

Es gibt sieben Haupt-Inhaltskategorien, die durch das folgende Venn-Diagramm zusammengefasst werden können:

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

Hinweis: Eine ausführlichere Diskussion dieser Inhaltskategorien und ihrer vergleichenden Funktionen geht über den Rahmen dieses Artikels hinaus; möglicherweise möchten Sie die relevanten Teile der HTML-Spezifikation lesen.

Metadaten-Inhalt

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

Die Metadaten-Elemente sind:

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

Flussinhalt

Flussinhalt ist eine breite Kategorie, die die meisten Elemente umfasst, die innerhalb des <body>-Elements gehen können, einschließlich Überschriftselemente, Abschnittselemente, Phrasierungselemente, Einbettungselemente, interaktive Elemente und formularbezogene Elemente. Es umfasst auch Textknoten (aber nicht solche, 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 Untergruppe von Flussinhalt, erstellt einen Abschnitt in der aktuellen Gliederung, der den Umfang der <header>- und <footer>-Elemente definiert.

Die Abschnittselemente sind:

Überschrifteninhalt

Überschrifteninhalt, eine Untergruppe von Flussinhalt, definiert den Titel eines Abschnitts. Diese Definition gilt sowohl für Abschnitte, die durch explizite Abschnittsinhalt-Elemente markiert sind, als auch für die, die implizit durch den Überschrifteninhalt selbst definiert sind.

Die Überschriftenelemente sind:

Hinweis: Obwohl sie wahrscheinlich Überschrifteninhalt enthalten, sind <header> selbst kein Überschrifteninhalt.

Phrasierungsinhalt

Phrasierungsinhalt, eine Untergruppe von Flussinhalt, bezieht sich auf den Text und die Auszeichnung innerhalb eines Dokuments. Sequenzen von Phrasierungsinhalten bilden 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 Phrasierungsinhalte enthält
  • <area>, wenn es ein Nachkomme eines <map>-Elements ist
  • <del>, wenn es nur Phrasierungsinhalte enthält
  • <ins>, wenn es nur Phrasierungsinhalte enthält
  • <link>, wenn das itemprop-Attribut vorhanden ist
  • <map>, wenn es nur Phrasierungsinhalte enthält
  • <meta>, wenn das itemprop-Attribut vorhanden ist

Eingebetteter Inhalt

Eingebetteter Inhalt, eine Untergruppe von Flussinhalt, importiert eine andere Ressource oder fügt Inhalte aus einer anderen Auszeichnungssprache oder einem anderen Namensraum in das Dokument ein.

Die eingebetteten Inhalts-Elemente sind:

Interaktiver Inhalt

Interaktiver Inhalt, eine Untergruppe von Flussinhalt, umfasst Elemente, die speziell für die Benutzerinteraktion entwickelt wurden.

Die interaktiven Inhaltselemente sind:

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

Spürbarer Inhalt

Spürbarer Inhalt ist Inhalt, der weder leer noch verborgen ist; es ist Inhalt, der angezeigt und substanziell ist. Spürbarer Inhalt wird nicht zur Definition von Inhaltsmodellen verwendet, sondern um eine allgemeine Regel zu definieren: Elemente, deren Inhaltsmodell jeden Flussinhalt oder Phrasierungsinhalt ermöglicht, sollten mindestens einen Knoten in ihrem Inhalt haben, der spürbarer Inhalt ist und nicht das hidden-Attribut spezifiziert hat.

Die spürbaren Elemente sind:

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

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

Skriptunterstützende Elemente

Skriptunterstützende Elemente sind Elemente, die nicht direkt zu einer gerenderten Ausgabe des Dokuments beitragen. Stattdessen unterstützen sie Skripte, indem sie entweder Skriptcode direkt oder durch Skripte verwendete Daten enthalten oder spezifizieren. Fast alle Elemente, einschließlich derjenigen, die nur bestimmte Elemente aufnehmen (wie <ul>, das <li>-Elemente aufnimmt), können skriptunterstützende Elemente enthalten.

Die skriptunterstützenden Elemente sind:

Formularassoziierte Inhalte

Formularassoziierte Inhalte sind eine Untergruppe von Flussinhalten, die aus Elementen besteht, die einen Formularbesitzer haben und überall dort verwendet werden können, wo Flussinhalte erwartet werden. Ein Formularbesitzer 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:

gelistet

Elemente, die in den Sammlungen HTMLFormElement.elements und HTMLFieldSetElement.elements aufgeführt sind. Enthält <button>, <fieldset>, <input>, <object>, <output>, <select> und <textarea>.

submitfähig

Elemente, die zur Erstellung des Formulardatensatzes verwendet werden können, wenn das Formular gesendet wird. Enthält <button>, <input>, <select> und <textarea>.

rücksetzbar

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

autocapitalize-und-autocorrect-vererbend

Elemente, die die Attribute autocapitalize und autocorrect von ihrem Formularbesitzer erben. Enthält <button>, <fieldset>, <input>, <output>, <select> und <textarea>.

Label-zuweisbar

Elemente, die mit <label>-Elementen verknüpft werden können. Enthält <button>, <input> (alle Typen außer hidden), <meter>, <output>, <progress>, <select> und <textarea>.

Transparentes Inhaltsmodell

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

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 kein korrektes Englisch).

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