HTML

icon =

_noextcode = on

extension =

mime = text/html

type code = TEXT

uniform type =

conforms to =

developer = W3C & WHATWG

released =

latest release version = 5.2/ 5.3（工作草案）

latest release date =

genre = 文件檔案格式

container for =

contained by =

extended from = SGML

extended to = XHTML

standard =

free = 是

url =

icon_size = 120px}}

超文字標記語言（HyperText Markup Language，簡稱：HTML）是一種用於建立網頁的標準標記語言。HTML 是一種基礎技術，常與 CSS、JavaScript 一起被眾多網站用於設計網頁、網頁應用程式以及移動應用程式的使用者介面。網頁瀏覽器可以讀取 HTML 檔案，並將其渲染成視覺化網頁。HTML 檔案以「.htm」和「.html」為檔名，是一種純文字檔案，可以使用記事本、寫字板等文字編輯器進行編輯，也可以使用 Frontpage、Dreamweaver 等網頁製作軟體進行快速建立與編輯。HTML 描述了一個網站的結構語義隨著線索的呈現，使之成為一種標記語言而非程式語言。

HTML 元素是構建網站的基石。HTML 允許嵌入影像與物件，並且可以用於建立互動式表單，它被用來結構化資訊 —— 例如標題、段落和列表等等，也可用來在一定程度上描述文件的外觀和語義。HTML 的語言形式為尖括號包圍的 HTML 元素（如），瀏覽器使用 HTML 標籤和指令碼來詮釋網頁內容，但不會將它們顯示在頁面上。

HTML 可以嵌入如 JavaScript 的指令碼語言，它們會影響 HTML 網頁的行為。網頁瀏覽器也可以引用層疊樣式表（CSS）來定義文字和其它元素的外觀與佈局。維護 HTML 和 CSS 標準的組織全球資訊網聯盟（W3C）鼓勵人們使用 CSS 替代一些用於表現的 HTML 元素。

歷史

1.1 發展

1980 年，物理學家蒂姆・伯納斯 - 李在歐洲核子研究中心（CERN）在承包工程期間，為使 CERN 的研究人員使用並共享文件，他提出並建立原型系統 ENQUIRE。1989 年，伯納斯 - 李在一份備忘錄中提出一個基於網際網路的超文本系統。他規定 HTML 並在 1990 年底寫出瀏覽器和伺服器軟體。同年，伯納斯 - 李與 CERN 的資料系統工程師羅伯特・卡里奧聯合為專案申請資助，但未被 CERN 正式批准。在他的個人筆記中伯納斯 - 李列舉 “一些使用超文字的領域”，並把百科全書列為首位。

HTML 的首個公開描述出現於一個名為 HTML Tags 的檔案中，由蒂姆・伯納斯 - 李於 1991 年底提及。它描述 18 個元素，包括 HTML 初始的、相對簡單的設計。除了超連結標籤外，其他設計都深受 CERN 內部一個以標準通用標記語言（SGML）為基礎的檔案格式 SGMLguid 的影響。這些元素仍有 11 個存在於 HTML 4 中。

伯納斯 - 李認為 HTML 是 SGML 的一個應用程式。1993 年中期網際網路工程任務組（IETF）釋出首個 HTML 規範的提案： “超文字標記語言（HTML）” 網際網路草案，由伯納斯 - 李與撰寫。其中包括一個 SGML 文件型別定義來定義語法。草案於 6 個月後過期，不過值得注意的是其對 NCSA Mosaic 瀏覽器嵌入線上影像的自定義標籤的認可，這反映 IETF 把標準立足於成功原型的理念。同樣，在 1993 年末提出的與之競爭的網際網路草案 “HTML+（超文字標記格式）” 建議規範已經實現的功能，如表格與填寫表單。

在 HTML 和 HTML + 的草案於 1994 年初到期後，IETF 建立一個 HTML 工作組，並在 1995 年完成 "HTML 2.0"，這是第一個旨在成為對其後續實現標準的依據的 HTML 規範。

在 IETF 的主持下，HTML 標準的進一步發展因競爭利益而遭受停滯。自 1996 年起，HTML 規範一直由全球資訊網聯盟（W3C）維護，並由商業軟體廠商出資。不過在 2000 年，HTML 也成為國際標準（ISO/ IEC15445：2000）。HTML 4.01 於 1999 年末釋出，進一步的勘誤版本於 2001 年釋出。2004 年，網頁超文字應用技術工作小組（WHATWG）開始開發 HTML5，並在 2008 年與 W3C 共同交付，2014 年 10 月 28 日完成標準化。

1.2 版本時間線

1.2.1 HTML 2

; 1995 年 11 月 24 日: HTML 2.0 作為 IETF RFC 1866 釋出。追加 RFC 的附加功能：

1995 年 11 月 25 日：RFC 1867（基於表單的檔案上傳）
1996 年 5 月：RFC 1942（表格）
1996 年 8 月：RFC 1980（客戶端影像對映）
1997 年 1 月：RFC 2070（國際化）

1.2.2 HTML 3

; 1997 年 1 月 14 日: HTML 3.2 作為 W3C 推薦標準釋出。這是首個完全由 W3C 開發並標準化的版本，因 IETF 於 1996 年 9 月 12 日關閉它的 HTML 工作組。最初代號為 “威爾伯”（Wilbur），HTML 3.2 完全去除數學公式，協調各種專有擴充套件，並採用網景設計的大多數視覺標記標籤。由於兩家公司達成了協議，網景的 Blink 元素和微軟的 Marquee 元素被移除。HTML 對數學公式的支援最後成為另外一種被稱為 MathML 的標準。

1.2.3 HTML 4

; 1997 年 12 月 18 日: HTML 4.0 作為 W3C 推薦標準釋出。它提供三種變化：

:* 嚴格，過時的元素被禁止。

:* 過渡，過時的元素被允許。

:* 框架集，大多隻與框架相關的元素被允許。

: 最初代號 “美洲獅”（Cougar）， HTML 4.0 採用許多特定瀏覽器的元素型別和屬性，並試圖淘汰網景的視覺標記功能，將其標記為不贊成使用。HTML 4 是遵循 ISO 8879 - SGML 的 SGML 應用程式。

 1998 年 4 月 24 日: HTML 4.0 進行微調，不增加版本號。

 1999 年 12 月 24 日: HTML 4.01 作為 W3C 推薦標準釋出。它同樣提供三種變化，最終 勘誤版於 2001 年 5 月 12 日釋出。

 2000 年 5 月: ISO/IEC 15445:2000（"ISO HTML"，基於 HTML 4.01 嚴格版）作為 ISO/IEC 國際標準釋出。在 ISO 中這一標準位於域（ISO/IEC 聯合技術委員會 1、小組委員會 34 – 文件描述與處理語言）。

1.2.4 HTML 5

; 2014 年 10 月 28 日: HTML 5 作為 W3C 推薦標準釋出。

1.3 草案時間線

 1991 年 10 月: HTML 標籤，一個非正式 CERN 檔案首次公開 18 個 HTML 標籤。

 1992 年 6 月: HTML DTD 的首個非正式草案， 後續有七個修訂版（7 月 15 日，8 月 6 日，8 月 18 日，11 月 17 日，11 月 19 日，11 月 20 日，11 月 22 日）。

 1992 年 11 月: HTML DTD 1.1（首個版本號，基於 RCS 修訂版，版本號從 1.1 開始而非 1.0），非正式草案。

 1993 年 6 月：超文字標記語言由 IETF IIIR 工作小組作為網際網路草案（一個粗略的建議標準）。在被第二版取代一個月後，IETF 又釋出 6 個草案，最終在 RFC1866 中釋出 HTML 2.0。

 1993 年 11 月: HTML + 由 IETF 作為網際網路草案發布，是超文字標記語言草案的一個競爭性提案。它於 1994 年 5 月到期。

 1995 年 4 月 （1995 年 3 月編寫）: HTML 3.0 被提議作為 IETF 的標準，但直到提案在五個月過期後（1995 年 9 月 28 日）仍沒有進一步的行動。它包含許多拉格特 HTML + 提案的功能，如對錶格的支援、圍繞資料的文字流和複雜的數學公式的顯示。W3C 開始開發自己的 Arena 瀏覽器作為 HTML 3 和層疊樣式表的，但 HTML 3.0 並沒有獲得成功。瀏覽器廠商，包括微軟和網景，選擇實現 HTML3 草案功能的不同子集並引入它們自己的外掛（見瀏覽器大戰）。

 2008 年 1 月: HTML5 由 W3C 作為工作草案（ 連結）釋出。雖然 HTML5 的語法非常類似於 SGML，但它已經放棄任何成為 SGML 應用程式的嘗試，除了一種替代的基於 XML 的 HTML5 序列，它已明確定義自己的 “HTML” 序列。

 2011 年 HTML5 – 最終徵求

2011 年 5 月，工作小組將 HTML5 推進至 “最終徵求”（Last Call）階段，邀請 W3C 社群內外人士以確認本規範的技術可靠性。W3C 開發一套綜合性測試套件來實現完整規範的廣泛互動操作性，完整規範的目標日期為 2014 年。2011 年 1 月，WHATWG 將其 “HTML5” 活動標準重新命名為 “HTML”。W3C 仍然繼續其釋出 HTML5 的專案。

 2012 年 HTML5 – 候選推薦

2012 年 7 月，WHATWG 和 W3C 的工作產生一定程度的分離。W3C 繼續 HTML5 規範工作，重點放在單一明確的標準上，這被 WHATWG 稱為 “快照”。WHATWG 組織則將 HTML5 作為一個 “活動標準”（Living Standard）。活動標準的概念是從未完成但永遠保持更新與改進，可以新增新特性，但功能點不會被刪除。

2012 年 12 月，W3C 指定 HTML5 作為候選推薦階段。該階段的標準為 “兩個 100％完成，完全實現互動操作”。

 2014 年 HTML5 – 提案推薦與推薦

2014 年 9 月，HTML5 進入提案推薦階段。

2014 年 10 月 28 日，HTML5 作為穩定 W3C 推薦標準釋出，這意味著 HTML5 的標準化已經完成。

1.3.1 XHTML 版本

XHTML 是使用 XML 1.0 改寫自 HTML 4.01 的獨立語言。它不再被作為單獨標準開發。

XHTML 1.0， 2000 年 1 月 26 日作為 W3C 推薦標準釋出。修訂版於 2002 年 8 月 1 日釋出，它提供與 HTML 4.0 和 4.01 相同的三個變化，這些變化被重新在 XML 中制定。
XHTML 1.1，基於 XHTML 1.0 嚴格版，2001 年 5 月 31 日 作為 W3C 推薦標準釋出。修訂版可使用 模組化 XHTML 的模組，2001 年 4 月 10 日作為 W3C 推薦標準釋出。
XHTML 2.0 為工作草案，但為支援 HTML5 與 XHTML5 的工作，此草案被放棄。 XHTML 2.0 與 XHTML 1.x 不相容，因此更確切的說這是一個 XHTML 風格的新語言而不是 XHTML 1.x 的更新。
在 HTML5 草案中規定一個 XHTML 語法，稱為 “XHTML5.1”。

標記

HTML 標記包含標籤（及其屬性）、基於字元的資料型別、字元引用和實體引用等幾個關鍵部分。HTML 標籤是最常見的，通常成對出現，比如與。這些成對出現的標籤中，第一個標籤是開始標籤，第二個標籤是結束標籤。兩個標籤之間為元素的內容，有些標籤沒有內容，為空元素，如。

HTML 另一個重要組成部分為，這會觸發標準模式渲染。

以下是一個經典的 Hello World 程式的例子：

This is a title

Hello world!

和之間的文字描述網頁，和之間的文字為可視頁面內容。標記文字定義了瀏覽器的頁面標題。

文件標記型別用於 HTML5。 如果未進行宣告，瀏覽器會使用 “怪異模式” 進行渲染。

2.1 元素

HTML 文件由巢狀的 HTML 元素構成。它們用 HTML 標籤表示，包含於尖括號中，如

在一般情況下，一個元素由一對標籤表示：“開始標籤” 與 “結束標籤”。元素如果含有文字內容，就被放置在這些標籤之間。

在開始與結束標籤之間也可以封裝另外的標籤，包括標籤與文字的混合。這些巢狀元素是父元素的子元素。

開始標籤也可包含標籤屬性。這些屬性有諸如標識文件區段、將樣式資訊繫結到文件演示和為一些如等的標籤嵌入影像、引用影像來源等作用。

一些元素如換行符，不允許嵌入任何內容，無論是文字或其他標籤。這些元素只需一個單一的空標籤（類似於一個開始標籤），無需結束標籤。

許多標籤是可選的，尤其是那些很常用的段落元素的閉合端標籤。HTML 瀏覽器或其他媒介可以從上下文識別出元素的閉合端以及由 HTML 標準所定義的結構規則。這些規則非常複雜，不是大多數 HTML 編碼人員可以完全理解的。

因此，一個 HTML 元素的一般形式為：。一些 HTML 元素被定義為空元素，其形式為。空元素不能封裝任何內容。例如標籤或內聯標籤。一個 HTML 元素的名稱即為標籤使用的名稱。注意，結束標籤的名稱前面有一個斜槓 “/”，空元素不需要也不允許結束標籤。如果元素屬性未標明，則使用其預設值。

2.1.1 例子

HTML 文件的頁首：。標題被包含在頭部，例如：

The Title

標題：HTML 標題由到六個標籤構成，字型由大到小遞減：

Heading level 1

Heading level 2

Heading level 3

Heading level 4

Heading level 5

Heading level 6

段落：第一段 第二段

換行：。與之間的差異是 br 換行但不改變頁面的語義結構，而 p 部分的頁面成段。

這是一個使用換行段落

連結：使用標籤來建立連結。href 屬性包含連結的 URL 地址。

中文維基百科的連結！

2.1.2 屬性

}}

大多數元素的屬性以 “名稱 - 值” 的形式成對出現，由 “=” 分離並寫在開始標籤元素名之後。值一般由單引號或雙引號包圍，有些值的內容包含特定字元，在 HTML 中可以去掉引號（XHTML 不行）。不加引號的屬性值被認為是不安全的。有些屬性無需成對出現，僅存在於開始標籤中即可影響元素，如 img 元素的 ismap 屬性。

許多元素存在一些共通的屬性：

id 屬性為元素提供了在全文件內的唯一標識。它用於識別元素，以便樣式表可以改變其表現屬性，指令碼可以改變、顯示或刪除其內容或格式化。對於新增到頁面的 URL，它為元素提供了一個全域性唯一標識，通常為頁面的子章節。例如，ID "屬性" 對於
class 屬性提供一種將類似元素分類的方式。常被用於語義化或格式化。例如，一個 HTML 文件可指定類來表明所有具有這一類值的元素都從屬於文件的主文字。格式化後，這樣的元素可能會聚集在一起，並作為頁面腳註而不會出現在 HTML 程式碼中。類屬性也被用於微格式的語義化。類值也可進行多宣告。如將元素同時放入標記與重要兩類中。
style 屬性可以將表現性質賦予一個特定元素。比起使用 id 或 class 屬性從樣式表中選擇元素，“style” 被認為是一個更好的做法，儘管有時這對一個簡單、專用或特別的樣式顯得太繁瑣。
title 屬性用於給元素一個附加的說明。 大多數瀏覽器中這一屬性顯示為。
lang 屬性用於識別元素內容的語言，它可能與文件的主要語言不同。例如，在中文文件中： 法語 c'est la vie 在法國的應用很普遍，意為 “這就是生活” 。

縮寫元素 abbr 可用於說明一些屬性：

HTML

這個例子顯示為 HTML； 在大多數瀏覽器中，游標指向縮寫時會顯示標題文字 “超文字標記語言”。

大多數元素採用與語言相關的屬性 dir 來指定文字方向，如 "rtl" 採用從右到左的文字，比如阿拉伯語、波斯語以及希伯來語。

2.2 字元與實體引用

在 4.0 版本中，HTML 定義了一系列共 252 個字元實體引用和 1,114,050 個字元值參考。二者都支援單個字元透過簡單的標記寫入。文字字元與其對應的標記渲染的效果相同。

用這種方式 “轉義” 字元的能力允許字元與 &（當分別被寫作 & lt; 和 & amp; 時）被理解為字元資料而不是標記。例如通常為標籤的開頭，& 通常為字元實體引用與數字字元引用的開頭；& 或 &#x26; 或 &#38; 將 & 作為元素的內容或屬性的值。雙引號字元 " 在不被用於屬性值的標示時必須轉義為 & quot; 或 &#x22; 或 &#34;；相等地，當於單引號字元 ' 不被用於屬性值的標示時，也必須轉義為 &#x27; 或 &#39;（或 HTML5 與 XHTML 文件中的 & apos;）。

如果文件作者忽略了轉義這樣的字元，一些瀏覽器會嘗試透過上下文猜測他們的意圖。如果結果仍為無效標記，這會使其他瀏覽器或使用者代理難以訪問到該文件，並使它們嘗試使用搜索和索引來解析該文件。

那些難以輸入或不在該文件字元編碼中的字元也可透過轉義來實現。例如通常只在西歐或南美的鍵盤出現的重音符 e（é），可以在 HTML 文件中用作實體引用 & eacute; 或數字引用 &#xE9; 或 &#233;。 諸如 UTF-8 的 Unicode 字元編碼與所有的現代瀏覽器相容並允許直接訪問全球書寫系統幾乎所有的字元 。

2.3 資料型別

HTML 為元素內容定義了多種資料型別，如指令碼資料、樣式表資料以及許多屬性值的型別，包括 ID、名稱、URI、數字長度單位、語言、媒體描述符顏色、字元編碼、日期和時間等等。所有這些資料型別都是字元資料的特殊化。

2.4 文件型別宣告

HTML 文件需要以（英語非正式說法 “doctype”）開頭。在瀏覽器中，文件型別宣告有助於確定渲染模式 —— 特別是是否使用怪異模式。

文件型別宣告的初衷是透過基於文件型別定義（DTD）的 SGML 工具來解析並驗證 HTML 文件。

HTML5 未定義 DTD，所以在 HTML5 中文件型別宣告更為簡短：

HTML 4 文件型別宣告舉例：

該宣告引用 HTML 4.01 “嚴格” 版的 DTD。基於 SGML 的驗證器可讀取 DTD，正確解析這些文件並執行驗證。在現代瀏覽器中，一個有效的文件型別啟用標準模式有別於怪異模式。

另外，HTML 4.01 提供過渡型與框架集型的 DTD。過渡型涵蓋最廣，它可整合當前以及老舊或 “過時” 的標籤，而嚴格型 DTD 排除了過時的標籤。框架集擁有所有構建框架所需的標籤以及過渡型的標籤。

語義化 HTML

}}

語義化 HTML 是一種編寫 HTML 的方式，它強調編碼資訊的含義在其格式（樣子）之上。HTML 從創立之初就包括語義化標記，但也包括標識性標記如、和標籤。也存在一些語義上中立的 span 與 div 標籤。自 1990 年代末 CSS 開始應用於大多數瀏覽器，網頁製作者就被鼓勵使用 CSS 以便呈現與內容分離。

在 2001 年一次對語義網的討論中，蒂姆・伯納斯 - 李等人給出了一種的方法，使智慧軟體 “代理人” 可能有一天會自動抓取網頁進行查詢、過濾並將之前不相關的聯絡起來。這種代理甚至在現在也不普遍，但一些 Web 2.0、混搭和價格比較網站的想法可能會結束。這些網頁應用程式的混合與伯納斯 - 李的語義代理人的之間主要區別基於以下事實：當前的聚合與資訊混合通常由網頁開發者設計，他們早已知道網路位置和他們希望混搭、比較與結合的特定資料的 API 語義。

網頁代理的一個重要型別是網路爬蟲或搜尋引擎蜘蛛。這些軟體代理依賴於它們發現的網頁的語義清晰度，因為它們一天要使用各種技術與演算法來讀取和索引數百萬個網頁並給網頁使用者提供搜尋工具，沒有這些全球資訊網的有效性就會大大降低。

為使搜尋引擎蜘蛛評估它們在 HTML 文件中發現的文字片段的重要性，也為那些建立標記等混合的人與更多的自動化代理工具，HTML 中的語義結構需要廣泛一致地應用從而將文字的含義呈現給瀏覽者。

表示性標記在當前的 HTML 和 XHTML 推薦中不被鼓勵使用。舊版本 HTML 中的大多數表示功能不再被允許使用，因為它們導致可訪問性變差、站點維護成本變高和文件大小變大。

好的語義化 HTML 也改善了網頁文件的可訪問性（參見）。例如，當螢幕閱讀器或音訊瀏覽器可以正確判定一個文件的結構時，視覺障礙使用者不會再因閱讀重複或無關的資訊而浪費時間。

分發

HTML 文件分發的方法和其他計算機檔案相同。不過，它們最常透過網頁伺服器的超文字傳輸協議或電子郵件傳輸。

4.1 HTTP

全球資訊網主要由從伺服器透過 HTTP 協議向瀏覽器傳送的 HTML 文件組成。但是，HTTP 也可以被用於傳輸 HTML 之外的資料，例如影像、聲音和其他內容。為使瀏覽器瞭解如何處理接收到的文件，在傳輸文件時必須同時傳遞檔案型別。這種元資料包含 MIME 型別（對於 HTML 4.01 或更早版本是 text/html，而對於 XHTML 1.0 或之後的版本是 application/xhtml+xml），以及字元編碼（參見 HTML 字元編碼方式）。

在現在的瀏覽器中，和 HTML 文件一起傳送的 MIME 型別影響文件的解讀方式。和 XHTML MIME 型別一起傳送的文件被認為是良構的 XML，而語法錯誤會導致瀏覽器無法呈現文件。完全相同的文件如果和 HTML MIME 型別一起傳送，則可能被正常顯示，因為瀏覽器對 HTML 的語法檢查更加鬆懈些。

W3C 的推薦指出，遵循規定的推薦指引的 XHTML 1.0 文件可標記二者任一的 MIME 型別。XHTML 1.1 還指出，XHTML 1.1 文件應標有兩種 MIME 型別。

4.2 HTML 郵件

大多數圖形電子郵件客戶端允許使用 HTML 的子集（經常界限不清）提供格式化和無法使用純文字的語義標記。這可能包括印刷資訊，如彩色標題、強調和引用文字、內嵌圖片和圖表等。許多這樣的客戶包含一個編寫 HTML 電子郵件訊息的圖形使用者介面編輯器和一個用於顯示的渲染引擎。在郵件中使用 HTML 受到了一些相容性的批評，由於一些盲人或具有視覺障礙的人的訪問問題，這種方式有利於偽裝的釣魚攻擊。因其訊息大小超過明文，所以它可混淆垃圾郵件過濾器。

4.3 命名規則

最常用的計算機副檔名為.html，通用縮寫為.htm。它起源於某些早期作業系統與檔案系統，如 DOS 以及 FAT 資料結構的侷限性，它將副檔名限制為 3 個字母。

4.4 HTML 應用程式

HTML 應用程式（HTA；副檔名 ".hta"）是一個 Microsoft Windows 應用程式，它在瀏覽器中使用 HTML 和動態 HTML 提供應用程式圖形介面。正規 HTML 檔案被限制在瀏覽器的安全模型中，只能分別透過網頁伺服器和網頁物件與站點 Cookie 進行通訊和操作。HTA 作為完全受信任的應用程式執行，因此擁有更多的許可權，如建立 / 編輯 / 刪除檔案與登錄檔項。因為它們在瀏覽器安全模式之外操作，所以 HTA 不能透過 HTTP 執行，必須下載（就像 EXE 檔案）並在本地檔案系統執行。

所見即所得編輯器

所見即所得編輯器使用圖形使用者介面（GUI）顯示 HTML 文件，常常類似於文字處理器，所以使用者可以設計一切。編者面對的是文件，而不是程式碼，所以作者並不需要太多的 HTML 知識。這種所見即所得的編輯模式一直受到詬病，主要因為它生成的程式碼質量不高；也有人主張將其改變至 WYSIWYM 模型（所見即所指）。

所見即所得的編輯器仍然是一個有爭議的話題，由於人們普遍認為它們存在以下缺陷：

主要依賴於佈局而不是其具體含義，經常使用並不能傳達預期含義而只是簡單複製佈局的標記
經常產生非常冗長和重複的程式碼，而這些程式碼並沒有利用 HTML 和 CSS 的級聯特性。
經常產生語法不正確的標記，被稱為 “標籤湯” 或語義不正確的標記（例如使用來表示斜體）。
由於 HTML 文件中的大量資訊並是不在佈局中，所以這種模型因其 “所見即所得” 的特性而一直受到詬病。