內容類型
每個 HTML 元素都要遵從該元素可擁有何種內容規則,這些規則被歸為幾種常用的內容模型(content model)。每個 HTML 元素都屬於零個、一個、或數個內容的模型,所有元素內容的設置規則都要遵從 HTML 一致性文件。
內容類型有三種類型:
- 主要內容類型(Main content categories)描述了許多元素共享的常見內容規則(content rule)。
- 表單相關內容類型(Form-related content categories)描述了表單相關元素的內容規則。
- 特別內容類型(Specific content categories) 描述了只有少數元素共享的內容規則,有時甚至只有特定上下文。
主要內容類型
資訊元內容(Metadata content)
屬於元資訊內容類型的元素修飾該文件其餘部分的陳述或行為、與其他文件建立連結、或是傳達其他外來(out of band)訊息。
屬於這個類型的元素有 <base>
(en-US)、
已棄用
<command>
、<link>
(en-US)、<meta>
(en-US)、<noscript>
(en-US)、<script>
、<style>
(en-US) 與 <title>
(en-US)
流內容(Flow content)
屬於流內容的元素通常含有文字或嵌入內容。它們是:<a>
(en-US)、<abbr>
(en-US)、<address>
(en-US)、<article>
(en-US)、<aside>
(en-US)、<audio>
(en-US)、<b>
(en-US),<bdo>
(en-US)、<bdi>
(en-US)、<blockquote>
、<br>
、<button>
(en-US)、<canvas>
、<cite>
(en-US)、<code>
、
已棄用
<command>
、<data>
(en-US)、<datalist>
(en-US)、<del>
(en-US)、<details>
(en-US)、<dfn>
(en-US)、<div>
、<dl>
(en-US)、<em>
(en-US)、<embed>
(en-US)、<fieldset>
(en-US)、<figure>
(en-US)、<footer>
(en-US)、<form>
(en-US)、<h1>
(en-US)、<h2>
(en-US)、<h3>
(en-US)、<h4>
(en-US)、<h5>
(en-US)、<h6>
(en-US)、<header>
(en-US)、<hgroup>
(en-US)、<hr>
、<i>
(en-US)、<iframe>
(en-US)、<img>
(en-US)、<input>
(en-US)、<ins>
(en-US)、<kbd>
(en-US)、<label>
(en-US)、<main>
(en-US)、<map>
(en-US)、<mark>
(en-US)、<math> (en-US)
、<menu>
(en-US)、<meter>
(en-US)、<nav>
、<noscript>
(en-US)、<object>
(en-US)、<ol>
(en-US)、<output>
(en-US)、<p>
(en-US)、<pre>
(en-US)、<progress>
(en-US)、<q>
、<ruby>
、<s>
(en-US)、<samp>
(en-US)、<script>
、<section>
(en-US)、<select>
(en-US)、<small>
(en-US)、<span>
(en-US)、<strong>
(en-US)、<sub>
(en-US)、<sup>
(en-US)、<svg>
(en-US)、<table>
、<template>
、<textarea>
(en-US)、<time>
、<ul>
(en-US)、<var>
(en-US)、<video>
(en-US)、<wbr>
(en-US) 還有文字。
在滿足特定條件下,某些元素也屬這個類型:
<area>
(en-US),如果它是<map>
(en-US) 元素的後代。<link>
(en-US),如果itemprop (en-US) 屬性存在。<meta>
(en-US),如果itemprop (en-US) 屬性存在。<style>
(en-US),如果scoped
(en-US) 屬性存在。
章節型內容(Sectioning content)
屬於章節型內容模型的元素會在該大綱裡面創立章節,這個章節會定義<header>
(en-US)、<footer>
(en-US)、還有heading content的範圍。
屬於這個類型的元素有<article>
(en-US)、<aside>
(en-US)、<nav>
還有<section>
(en-US)。
備註: 不要把這個內容模型,和把內容與常規大綱隔開的 sectioning root 類別搞混。
標題型內容(Heading content)
標題型內容定義了章節的標題,不論該章節由明確的章節型內容元素標記、抑或由標題本身隱式定義。
屬於這個類型的元素有<h1>
(en-US)、<h2>
(en-US)、<h3>
(en-US), <h4>
(en-US)、<h5>
(en-US)、<h6>
(en-US)還有<hgroup>
(en-US).
備註: 儘管 <header>
(en-US) 可能含有某些標題型內容,但它本身並不是。
段落型內容(Phrasing content)
段落型內容定義了文字、還有它包含的標記。Runs of phrasing content make up paragraphs.
屬於這個類型的元素有<abbr>
(en-US)、<audio>
(en-US)、<b>
(en-US)、<bdo>
(en-US)、<br>
、<button>
(en-US)、<canvas>
、<cite>
(en-US)、<code>
、
已棄用
<command>
、<datalist>
(en-US)、<dfn>
(en-US)、<em>
(en-US)、<embed>
(en-US)、<i>
(en-US)、<iframe>
(en-US)、<img>
(en-US)、<input>
(en-US)、<kbd>
(en-US)、<label>
(en-US)、<mark>
(en-US)、<math> (en-US)
、<meter>
(en-US)、<noscript>
(en-US)、<object>
(en-US)、<output>
(en-US)、<progress>
(en-US)、<q>
、<ruby>
、<samp>
(en-US)、<script>
、<select>
(en-US)、<small>
(en-US)、<span>
(en-US)、<strong>
(en-US)、<sub>
(en-US)、<sup>
(en-US)、<svg>
(en-US)、<textarea>
(en-US)、<time>
、<var>
(en-US)、<video>
(en-US)、<wbr>
(en-US)以及空白字符在內的純文本。
在滿足特定條件下,某些元素也屬這個類型:
<a>
(en-US),如果它只包含段落型內容。<area>
(en-US),如果它是<map>
(en-US) 元素的後代。<del>
(en-US),如果它只包含段落型內容。<ins>
(en-US), 如果它只包含段落型內容。<link>
(en-US), 如果 itemprop (en-US) 屬性存在。<map>
(en-US), 如果它只包含段落型內容。<meta>
(en-US), 如果 itemprop (en-US) 屬性存在。
嵌入型內容(Embedded content)
嵌入型內容從其他標記語言或文件命名空間,導入資源或插入內容。 屬於這個類型的元素有<audio>
(en-US)、<canvas>
、<embed>
(en-US)、<iframe>
(en-US)、<img>
(en-US)、<math> (en-US)
、<object>
(en-US)、<svg>
(en-US)、<video>
(en-US)。
互動型內容(Interactive content)
互動型內容包含專為用戶互動設計的元素。屬於這個類型的元素有 <a>
(en-US)、<button>
(en-US)、<details>
(en-US)、<embed>
(en-US)、<iframe>
(en-US)、<label>
(en-US)、<select>
(en-US) 還有 <textarea>
(en-US)。
在滿足特定條件下,某些元素也屬這個類型:
<audio>
(en-US),如果controls
(en-US) 元素存在。<img>
(en-US),如果usemap
(en-US) 元素存在。<input>
(en-US),如果type
(en-US) 元素不是隱藏狀態。<menu>
(en-US),如果type
(en-US) 元素處於 toolbar 狀態。<object>
(en-US),如果usemap
(en-US) 元素存在。<video>
(en-US),如果controls
(en-US) 元素存在。
捫及內容(Palpable content)
不是空白或隱藏的內容稱為捫及。屬於流內容或是 Phrasing content 模型的元素最少要有一個捫及的節點。
表單相關內容(Form-associated content)
表單相關內容包含了由 form 屬性顯露的 form owner 元素。form owner 是本身包含於 <form>
(en-US)、或 id 由 form 屬性指定的元素。
<button>
(en-US)<fieldset>
(en-US)<input>
(en-US)<label>
(en-US)<meter>
(en-US)<object>
(en-US)<output>
(en-US)<progress>
(en-US)<select>
(en-US)<textarea>
(en-US)
本類型包含某些子類別:
- listed
-
Elements that are listed in the form.elements (en-US) and fieldset.elements IDL collections. Contains
<button>
(en-US),<fieldset>
(en-US),<input>
(en-US),<object>
(en-US),<output>
(en-US),<select>
(en-US), and<textarea>
(en-US). - labelable
-
與元素
<label>
(en-US) 相關的元素。包含<button>
(en-US)、<input>
(en-US)、<meter>
(en-US)、<output>
(en-US)、<progress>
(en-US)、<select>
(en-US)、<textarea>
(en-US)。 - submittable
-
用在建構送出時,資料就設定好的表單元素。包含
<button>
(en-US)、<input>
(en-US)、<object>
(en-US)、<select>
(en-US)、<textarea>
(en-US)。 - resettable
-
當表單重設時會受影響的元素。包含
<button>
(en-US)、<input>
(en-US)、<output>
(en-US)、<select>
(en-US)、<textarea>
(en-US)。
透明內容模型(Transparent content model)
如果一個元素是透明內容模型,then its contents must be structured such that they would be valid HTML 5,就算該透明元素被移除、並由子元素取代。
例如,<del>
(en-US) 與 <ins>
(en-US) 元素都是透明的:
<p>我們認為下面這些真理是<del><em>神聖不可否認</em></del><ins>不言而喻的。</ins></p>
這果這些元素被刪掉的話,這個分段依然在 HTML 有效(if not correct English)
<p>我們認為下面這些真理是<em>神聖不可否認</em>不言而喻的。</p>
其他內容模型
章節根(Sectioning root)