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 aufweisen. Dies ist eine lose Gruppierung (es schafft tatsächlich keine Beziehung zwischen den Elementen dieser Kategorien), aber sie helfen, das gemeinsame Verhalten und die zugehörigen Regeln der Kategorien zu definieren und zu beschreiben. Es ist möglich, dass Elemente nicht Mitglied einer beliebigen dieser Kategorien sind.

Die Inhaltskategorien werden verwendet, um das Inhaltsmodell von Elementen zu definieren, das heißt, was jedes Element als Nachkommen haben kann. Zum Beispiel kann das <p>-Element nur formatierten Text enthalten, während das <div>-Element Flussinhalt enthalten kann. Einige Elemente, wie <ins>, haben ein transparentes Inhaltsmodell.

Es gibt sieben Hauptinhaltskategorien, die im folgenden Venn-Diagramm zusammengefasst werden können:

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

Hinweis: Eine detailliertere Diskussion dieser Inhaltskategorien und ihrer vergleichbaren Funktionalitäten fällt nicht in den Geltungsbereich dieses Artikels. Für weitere Informationen sollten Sie die relevanten Abschnitte der HTML-Spezifikation lesen.

Metadaten-Inhalt

Elemente, die zur Kategorie des Metadaten-Inhalts gehören, ändern die Präsentation oder das Verhalten des restlichen Dokuments, richten Links zu anderen Dokumenten ein oder vermitteln andere außerhalb des Bandes liegende Informationen. Alles im <head>, einschließlich <title>, <link>, <script>, <style> und dem seltener genutzten <base>, sind Metadaten-Inhalte. Es gibt ein <meta>-Element für Metadaten, die nicht von diesen anderen Elementen 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, Fluss und formatierten Text und ist ein skriptunterstützendes Element; <script> kann verwendet werden, wo Metadaten-Inhalte, formatierten Inhalte oder skriptunterstützende Elemente erwartet werden.

Flussinhalt

Flussinhalt ist eine breite Kategorie, die die meisten Elemente umfasst, die innerhalb des <body>-Elements stehen können, einschließlich Überschriftenelemente, Abschnittselemente, formatierten Elemente, einbettenden Elemente, interaktive Elemente und formularbezogene Elemente. Dazu gehören auch Textknoten (aber nicht diejenigen, die nur aus Leerzeichen bestehen).

Die Flusselemente sind:

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

Abschnittsinhalt

Abschnittsinhalt, ein Teil von Flussinhalt, erstellt einen Abschnitt im aktuellen Umriss, der den Geltungsbereich von <header>- und <footer>-Elementen definiert.

Die Abschnittselemente sind:

Überschrifteninhalt

Überschrifteninhalt, ein Teil des Flussinhalts, definiert den Titel eines Abschnitts. Diese Definition gilt sowohl für Abschnitte, die durch explizite Abschnittsinhalts-Elemente 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 das <header> selbst kein Überschrifteninhalt.

Formatierten Inhalt

Formatierten Inhalt, ein Teil des Flussinhalts, bezieht sich auf den Text und das Markup innerhalb eines Dokuments. Sequenzen von formatierten Inhalten bilden Absätze.

Die formatierten Elemente sind:

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

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

Eingebetteter Inhalt

Eingebetteter Inhalt, ein Teil des Flussinhalts, importiert eine andere Ressource oder fügt Inhalt aus einer anderen Auszeichnungssprache oder einem anderen Namensraum in das Dokument ein.

Die eingebetteten Inhaltselemente sind:

Interaktiver Inhalt

Interaktiver Inhalt, ein Teil des Flussinhalts, umfasst Elemente, die speziell für die Benutzerinteraktion konzipiert sind.

Die interaktiven Inhaltselemente sind:

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

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 um eine allgemeine Regel zu definieren: Elemente, deren Inhaltsmodell jeglichen Flussinhalt oder formatierten Inhalt erlaubt, sollten mindestens einen Knoten in ihren Inhalten haben, der greifbaren Inhalt darstellt und nicht das hidden-Attribut angegeben hat.

Die greifbaren Elemente sind:

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

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

Elemente ohne Kategorie

Einige Elemente sind kein Mitglied irgendeiner Inhaltskategorie. Diese schließen ein:

Skriptunterstützende Elemente

Skriptunterstützende Elemente sind Elemente, die nicht direkt zum gerenderten Output eines Dokuments beitragen. Stattdessen dienen sie der Unterstützung von Skripten, entweder durch direkte Angabe oder Spezifizierung von Skriptcode oder durch Spezifizierung von Daten, die von Skripten genutzt werden. Fast alle Elemente, einschließlich derer, die nur spezifische Elemente zulassen (wie <ul>, das <li>-Elemente akzeptiert), können skriptunterstützende Elemente enthalten.

Die skriptunterstützenden Elemente sind:

Formularbezogener Inhalt

Formularbezogener Inhalt ist ein Teil des Flussinhalts und umfasst Elemente, die einen Formularbesitzer haben und überall dort verwendet werden können, wo Flussinhalt erwartet wird. Ein Formularbesitzer ist entweder das enthaltende <form>-Element oder das <form>, dessen id im form-Attribut des Elements angegeben ist.

Die formularbezogenen Elemente sind:

Diese Kategorie enthält mehrere Unterkategorien:

aufgelistet

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

einreichbar

Elemente, die zur Erstellung des Formulardatensatzes bei der Übermittlung des Formulars verwendet werden können. Beinhaltet <button>, <input>, <select> und <textarea>.

zurücksetzbar

Elemente, die beim Zurücksetzen eines Formulars betroffen sein können. Beinhaltet <input>, <output>, <select> und <textarea>.

Autokapitalisierungs- und Autokorrektur-vererbend

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

etikettiert

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

Transparentes Inhaltsmodell

Zusätzlich zu den gelisteten Inhaltskategorien kann das Inhaltsmodell eines Elements auch als "transparent" definiert werden. Wenn der erlaubte Inhalt eines Elements X "transparent" ist, dann betrachten Sie das übergeordnete Element von X. Wir schneiden den erlaubten Inhalt des Elternteils von X mit den Inhaltskategorien von X, und das Ergebnis ist das, was "transparent" in diesem Zusammenhang bedeutet. Wenn das übergeordnete Element von X ebenfalls ein transparentes Inhaltsmodell hat, gehen wir im Baum nach oben, bis wir ein nicht-transparentes Inhaltsmodell finden. Gibt es keinen solchen Elternteil, bedeutet "transparent" "Flussinhalt".

Beispielsweise akzeptiert ein <ruby>-Element formatierten Inhalt. Das <ins>-Element gehört zu der Kategorie des formatierten Inhalts, wenn es nur formatierten Inhalt enthält. Daher kann ein <ins>-Element innerhalb eines <ruby>-Elements platziert werden. Der erlaubte Inhalt des <ins>-Elements ist "transparent", was, wenn es in <ruby> verschachtelt ist, "formatierter Inhalt" bedeutet. Allerdings sind <rt>-Elemente kein formatierter Inhalt. Deshalb kann ein <rt>-Element nicht in dieses <ins>-Element verschachtelt werden, auch wenn sowohl <rt> als auch <ins> in <ruby> enthalten 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, bei der Bestimmung der Zulässigkeit der Kinder eines Elements können Sie nicht "durch" transparente Kinder sehen. Zum Beispiel akzeptiert ein <ul>-Element nur <li>-Elemente und skriptunterstützende Elemente und erlaubt nicht <del> oder <ins>, selbst wenn das <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>