內容類型
====

每個 HTML 元素都要遵從該元素可擁有何種內容規則，這些規則被歸為幾種常用的內容模型（content model）。每個 HTML 元素都屬於零個、一個、或數個內容的模型，所有元素內容的設置規則都要遵從 HTML 一致性文件。

內容類型有三種類型：

* 主要內容類型（Main content categories）描述了許多元素共享的常見內容規則（content rule）。
* 表單相關內容類型（Form-related content categories）描述了表單相關元素的內容規則。
* 特別內容類型（Specific content categories） 描述了只有少數元素共享的內容規則，有時甚至只有特定上下文。

![Content_categories_venn.png](/zh-TW/docs/Web/HTML/Content_categories/content_categories_venn.png)

主要內容類型
------

### 資訊元內容（Metadata content）

屬於*元資訊內容*類型的元素修飾該文件其餘部分的陳述或行為、與其他文件建立連結、或是傳達其他*外來*（out of band）訊息。

屬於這個類型的元素有 `<base>` (en-US)、
已棄用
`<command>`、`<link>` (en-US)、`<meta>` (en-US)、`<noscript>`、`<script>`、`<style>` (en-US) 與 `<title>`

### 流內容（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>`、`<object>` (en-US)、`<ol>` (en-US)、`<output>` (en-US)、`<p>` (en-US)、`<pre>` (en-US)、`<progress>` (en-US)、`<q>`、`<ruby>`、`
` (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>`、`<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）