Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 (sie schafft tatsächlich keine Beziehung zwischen den Elementen dieser Kategorien), aber sie helfen, das gemeinsame Verhalten der Kategorien und ihre zugehörigen Regeln zu definieren und zu beschreiben. Es ist möglich, dass Elemente (wie z.B. <track>) keiner dieser Kategorien angehören.

Die Inhaltskategorien werden verwendet, um das Inhaltsmodell von Elementen zu definieren, also was jedes Element als Nachkommen aufnehmen kann. Ein <p>-Element kann beispielsweise nur phrasing content enthalten, während ein <div>-Element flow content enthalten kann.

Es gibt sieben Hauptinhaltskategorien, die durch das untenstehende Venn-Diagramm zusammengefasst werden können:

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

Hinweis: Eine detailliertere Diskussion dieser Inhaltskategorien und ihrer vergleichenden Funktionalitäten ist über den Umfang dieses Artikels hinaus; dazu möchten Sie vielleicht die relevanten Teile der HTML-Spezifikation lesen.

Metadateninhalt

Elemente, die zur Kategorie Metadateninhalt gehören, ändern die Darstellung oder das Verhalten des restlichen Dokuments, stellen Verbindungen zu anderen Dokumenten her oder übermitteln andere out-of-band-Informationen. Alles, was im <head> steht, einschließlich <title>, <link>, <script>, <style> und dem weniger verwendeten <base>, ist Metadateninhalt. 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> ein Mitglied der Kategorien Metadaten, Flow und Phrasing Content und ist ein skriptunterstützendes Element; <script> kann verwendet werden, wo Metadateninhalt, Phrasing Content oder skriptunterstützende Elemente erwartet werden.

Flow-Inhalt

Flow-Inhalt ist eine breite Kategorie, die die meisten Elemente umfasst, die im <body>-Element enthalten sein können, einschließlich Überschriftenelementen, Abschnittselementen, Phrasing-Elementen, Einbettungselementen, interaktiven Elementen und formularbezogenen Elementen. Es enthält auch Textknoten (jedoch nicht diejenigen, die nur aus Leerzeichen bestehen).

Die Flow-Elemente sind:

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

Abschnittinhalt

Abschnittinhalt, ein Unterkategorie von Flow-Inhalt, erstellt einen Abschnitt in der aktuellen Gliederung, der den Umfang von <header>- und <footer>-Elementen definiert.

Die Abschnittselemente sind:

Überschrifteninhalt

Überschrifteninhalt, eine Unterkategorie von Flow-Inhalt, definiert den Titel eines Abschnitts. Diese Definition gilt sowohl für Abschnitte, die durch ein explizites Abschnittsinhaltelement markiert sind, als auch für solche, die implizit durch den Überschrifteninhalt selbst definiert sind.

Die Überschriftenelemente sind:

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

Phrasing Content

Phrasing Content, eine Unterkategorie von Flow Content, bezieht sich auf den Text und die Auszeichnung innerhalb eines Dokuments. Sequenzen von Phrasing Content bilden Absätze.

Die Phrasing-Elemente sind:

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

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

Eingebetteter Inhalt

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

Die eingebetteten Inhalts-Elemente sind:

Interaktiver Inhalt

Interaktiver Inhalt, eine Unterkategorie von Flow Content, umfasst Elemente, die speziell für die Interaktion mit dem Benutzer entwickelt wurden.

Die interaktiven Inhalts-Elemente 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 gerendert und substanziell ist. Spürbarer Inhalt wird nicht zur Definition von Inhaltsmodellen verwendet, sondern zur Definition einer allgemeinen Regel: Elemente, deren Inhaltsmodell jeglichen Flow Content oder Phrasing Content zulässt, sollten mindestens einen Knoten in ihrem Inhalt haben, der spürbarer Inhalt ist und nicht das hidden-Attribut angegeben 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 Name-Wert-Gruppe enthalten
  • <input>, wenn das type-Attribut nicht im hidden-Zustand ist
  • <ol>, wenn seine Kinder mindestens ein <li>-Element enthalten
  • <ul>, wenn seine Kinder mindestens ein <li>-Element enthalten

Skriptunterstützende Elemente

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

Die skriptunterstützenden Elemente sind:

Formularassoziierter Inhalt

Formularassoziierter Inhalt ist eine Unterkategorie von Flow Content, die aus Elementen besteht, die einen Formularbesitzer haben und überall dort verwendet werden können, wo Flow Content erwartet wird. 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:

aufgelistet

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

übertragbar

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

zurücksetzbar

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

autocapitalize-und-autocorrect-erbende

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

beschriftbar

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

Transparenter Inhaltsmodell

Zusätzlich zu den aufgeführten Inhaltskategorien kann das Inhaltsmodell eines Elements auch als "transparent" definiert werden. Wenn der zulässige Inhalt eines Elements X "transparent" ist, betrachten wir das Elternteil von X. Wir schneiden den zulässigen Inhalt des Elternteils von X mit den Inhaltskategorien von X, und das Ergebnis ist, was "transparent" in diesem Kontext bedeutet. Wenn das Elternteil von X auch ein transparentes Inhaltsmodell hat, fahren wir im Baum nach oben fort, bis wir ein nicht transparentes Inhaltsmodell finden. Wenn es kein solches Elternteil gibt, bedeutet "transparent" "Flow Content".

Ein Beispiel: Ein <ruby>-Element akzeptiert Phrasing Content. Das <ins> ist dann in der Kategorie Phrasing Content, wenn es nur Phrasing Content enthält. Folglich kann ein <ins> in ein <ruby>-Element eingebettet werden. Das <ins>-Element erlaubt "transparenten" Inhalt, was beim Einbetten in <ruby> "Phrasing Content" bedeutet. Allerdings sind <rt>-Elemente kein Phrasing Content. Folglich kann ein <rt> nicht in diesem <ins>-Element enthalten sein, obwohl sowohl <rt> als auch <ins> innerhalb <ruby> sein können, und <ins> transparent ist.

html
<ruby>
  Text before
  <ins>
    <!-- Invalid: rt cannot be placed inside ins here -->
    <rt>Pronunciation</rt>
  </ins>
</ruby>
html
<ruby>
  Text before
  <!-- Valid: ins can be inside ruby, and rt can be inside ruby -->
  <ins>Inserted text</ins>
  <rt>Pronunciation</rt>
</ruby>
html
<ruby>
  Text before
  <!-- Valid: rt can be inside ruby, and ins can be inside rt -->
  <rt><ins>Pronunciation</ins></rt>
</ruby>

Transparent ist ein Inhaltsmodell, keine Inhaltskategorie, daher definiert es nur, was ein Element enthalten kann, nicht wo das Element platziert werden kann. Das heißt, beim Bestimmen der Zulässigkeit von Elementkindern können Sie nicht "durch" transparente Kinder "sehen". Zum Beispiel akzeptiert ein <ul>-Element nur <li>-Elemente und skriptunterstützende Elemente und erlaubt kein <del> oder <ins>, selbst wenn <del> nur <li>-Elemente enthält.

html
<ul>
  <del>
    <li>Oranges</li>
    <li>Toilet paper</li>
  </del>
  <li>Toothpaste</li>
</ul>
html
<ul>
  <li><del>Oranges</del></li>
  <li><del>Toilet paper</del></li>
  <li>Toothpaste</li>
</ul>