<p><b>超文本標記語言</b>（英語：<span lang="en"><b>H</b>yper<b>T</b>ext <b>M</b>arkup <b>L</b>anguage</span>，簡稱：<b>HTML</b>）是一種用於建立網頁的標準標記語言。HTML是一種基礎技術，常與CSS、JavaScript一起被眾多網站用於設計網頁、網頁應用程式以及行動應用程式的使用者介面。網頁瀏覽器可以讀取HTML檔案，並將其彩現成視覺化網頁。HTML描述了一個網站的結構語意隨著線索的呈現，使之成為一種標記語言而非程式語言。
</p><p>HTML元素是構建網站的基石。HTML允許嵌入圖像與物件，並且可以用於建立互動式表單，它被用來結構化資訊——例如標題、段落和列表等等，也可用來在一定程度上描述文件的外觀和語意。HTML的語言形式為尖括號包圍的HTML元素（如<code style="white-space:nowrap;">&lt;html&gt;</code>），瀏覽器使用HTML標籤和指令碼來詮釋網頁內容，但不會將它們顯示在頁面上。
</p><p>HTML可以嵌入如JavaScript的手稿語言，它們會影響HTML網頁的行為。網頁瀏覽器也可以參照階層式樣式表（CSS）來定義文字和其它元素的外觀與布局。維護HTML和CSS標準的組織全球資訊網協會（W3C）鼓勵人們使用CSS替代一些用於表現的HTML元素。
</p>


<h2><span id=".E5.8E.86.E5.8F.B2"></span><span id="历史">歷史</span></h2>

<h3><span id=".E5.8F.91.E5.B1.95"></span><span id="发展">發展</span></h3>

<p>1980年，物理學家提姆·柏內茲-李在歐洲核子研究中心（CERN）在承包工程期間，為使CERN的研究人員使用並共享文件，他提出並建立原型系統ENQUIRE。1989年，柏內茲-李在一份備忘錄中提出一個基於網際網路的超文字系統。他制定HTML並在1990年底寫出瀏覽器和伺服器軟體。同年，柏內茲-李與CERN的資料系統工程師羅伯特·卡里奧聯合為專案申請資助，但未被CERN正式批准。在他的個人筆記中柏內茲-李列舉「一些使用超文字的領域」，並把百科全書列為第一項。
</p><p>HTML的首次公開描述出現於一個名為HTML Tags的檔案中，由提姆·柏內茲-李於1991年底提及。它描述18個元素，包括HTML初始的、相對簡單的設計。除了超連結標籤外，其他設計都深受CERN內部一個以標準通用標記語言（SGML）為基礎的檔案格式SGMLguid的影響。這些元素仍有11個存在於HTML 4中。
</p><p>柏內茲-李認為HTML是SGML的一個應用程式。1993年中期網際網路工程任務組（IETF）發布首個HTML規範的提案：「超文本標記語言（HTML）」網際網路草案（頁面存檔備份，存於網際網路檔案館），由柏內茲-李與<span data-orig-title="丹·康纳利" data-lang-code="en" data-lang-name="英語" data-foreign-title="Dan Connolly (computer scientist)"><span>丹·康納利</span></span>撰寫。其中包括一個SGML文件類型定義來定義語法。草案於6個月後過期，不過值得注意的是其對NCSA Mosaic瀏覽器嵌入線上圖像的自訂標籤的認可，這反映IETF把標準立足於成功原型的理念。同樣，<span data-orig-title="戴夫·拉格特" data-lang-code="en" data-lang-name="英語" data-foreign-title="Dave Raggett"><span>戴夫·拉格特</span></span>在1993年末提出的與之競爭的網際網路草案「HTML+（超文字標記格式）」建議規範已經實現的功能，如表格與填寫表單。
</p><p>在HTML和HTML+的草案於1994年初到期後，IETF建立一個HTML工作群組，並在1995年完成"HTML 2.0"，這是第一個旨在成為對其後續實現標準的依據的HTML規範。
</p><p>在IETF的主導下，HTML標準的進一步發展因競爭利益而遭受停滯。自1996年起，HTML規範一直由全球資訊網協會（W3C）維護，並由商業軟體廠商出資。不過在2000年，HTML也成為國際標準（ISO/ IEC15445：2000）。HTML 4.01於1999年末發布，進一步的勘誤版本於2001年發布。2004年，網頁超文字應用技術工作小組（WHATWG）開始開發HTML5，並在2008年與W3C共同提出，2014年10月28日完成標準化。
</p>
<h3><span id=".E7.89.88.E6.9C.AC.E6.97.B6.E9.97.B4.E7.BA.BF"></span><span id="版本时间线">版本時間線</span></h3>
<h4><span id="HTML_2">HTML 2</span></h4>
<dl><dd><dl><dt>1995年11月24日</dt>
<dd>HTML 2.0作為IETF RFC 1866發布。追加RFC的附加功能：</dd></dl><ul><li>1995年11月25日：RFC 1867（基於表單的檔案上傳）</li>
<li>1996年5月：RFC 1942（表格）</li>
<li>1996年8月：RFC 1980（客戶端圖像對映）</li>
<li>1997年1月：RFC 2070（國際化）</li></ul></dd></dl><h4><span id="HTML_3">HTML 3</span></h4>
<dl><dd><dl><dt>1997年1月14日</dt>
<dd>HTML 3.2作為W3C推薦標準發布。這是首個完全由W3C開發並標準化的版本，因IETF於1996年9月12日關閉它的HTML工作群組。最初代號為「威爾伯」（Wilbur），HTML 3.2完全去除數學公式，協調各種專有擴充，並採用網景設計的大多數視覺標記標籤。由於兩家公司達成了協議，網景的Blink元素和微軟的Marquee元素被移除。HTML對數學公式的支援最後成為另外一種被稱為MathML的標準。</dd></dl></dd></dl><h4><span id="HTML_4">HTML 4</span></h4>
<dl><dd><dl><dt>1997年12月18日</dt>
<dd>HTML 4.0作為W3C推薦標準發布。它提供三種變化：
<ul><li>嚴格，過時的元素被禁止。</li>
<li>過渡，過時的元素被允許。</li>
<li>框架集，大多只與框架相關的元素被允許。</li></ul></dd>
<dd>最初代號「美洲獅」（Cougar）， HTML 4.0採用許多特定瀏覽器的元素類型和屬性，並試圖淘汰網景的視覺標記功能，將其標記為不贊成使用。HTML 4是遵循ISO 8879 -  SGML的SGML應用程式。</dd></dl></dd></dl><dl><dt>1998年4月24日</dt>
<dd>HTML 4.0進行微調，不增加版本號。</dd>
<dt>1999年12月24日</dt>
<dd>HTML 4.01作為W3C推薦標準發布。它同樣提供三種變化，最終勘誤版（頁面存檔備份，存於網際網路檔案館）於2001年5月12日發布。</dd>
<dt>2000年5月</dt>
<dd>ISO/IEC 15445:2000（"ISO HTML"，基於HTML 4.01嚴格版）作為ISO/IEC國際標準發布。在ISO中這一標準位於<span data-orig-title="ISO/IEC JTC 1/SC 34" data-lang-code="en" data-lang-name="英語" data-foreign-title="ISO/IEC JTC 1/SC 34"><span>ISO/IEC JTC 1/SC 34</span></span>域（ISO/IEC聯合技術委員會1、小組委員會34 – 文件描述與處理語言）。</dd></dl><h4><span id="HTML_5">HTML 5</span></h4>

<dl><dd><dl><dt>2014年10月28日</dt>
<dd>HTML 5作為W3C推薦標準發布。</dd></dl></dd></dl><h3><span id=".E8.8D.89.E6.A1.88.E6.97.B6.E9.97.B4.E7.BA.BF"></span><span id="草案时间线">草案時間線</span></h3>
<dl><dt>1991年10月</dt>
<dd>HTML標籤，一個非正式CERN檔案首次公開18個HTML標籤。</dd>
<dt>1992年6月</dt>
<dd>HTML DTD的首個非正式草案， 後續有七個修訂版（7月15日，8月6日，8月18日，11月17日，11月19日，11月20日，11月22日）。</dd>
<dt>1992年11月</dt>
<dd>HTML DTD 1.1（首個版本號，基於RCS修訂版，版本號從1.1開始而非1.0），非正式草案。</dd>
<dt>1993年6月</dt>
<dd>超文本標記語言由IETF IIIR工作小組作為網際網路草案（一個粗略的建議標準）。在被第二版取代一個月後，IETF又發布6個草案，最終在RFC1866中發布HTML 2.0。</dd>
<dt>1993年11月</dt>
<dd>HTML+由IETF作為網際網路草案發布，是超文本標記語言草案的一個競爭性提案。它於1994年5月到期。</dd>
<dt>1995年4月 （1995年3月編寫）</dt>
<dd>HTML 3.0被提議作為IETF的標準，但直到提案在五個月過期後（1995年9月28日）仍沒有進一步的行動。它包含許多拉格特HTML+提案的功能，如對表格的支援、圍繞資料的文字流和複雜的數學公式的顯示。W3C開始開發自己的Arena瀏覽器作為HTML 3和階層式樣式表的<span data-orig-title="试验台" data-lang-code="en" data-lang-name="英語" data-foreign-title="Test bed"><span>試驗台</span></span>，但HTML 3.0並沒有獲得成功。瀏覽器廠商，包括微軟和網景，選擇實現HTML3草案功能的不同子集並引入它們自己的外掛程式（見瀏覽器大戰）。</dd></dl>
<dl><dt>2008年1月</dt>
<dd>HTML5由W3C作為工作草案（連結（頁面存檔備份，存於網際網路檔案館））發布。雖然HTML5的語法非常類似於SGML，但它已經放棄任何成為SGML應用程式的嘗試，除了一種替代的基於XML的HTML5序列，它已明確定義自己的「HTML」序列。</dd>
<dt>2011年 HTML5 – 最終徵求</dt>
<dd>2011年5月，工作小組將HTML5推進至「最終徵求」（Last Call）階段，邀請W3C社群內外人士以確認本規範的技術可靠性。W3C開發一套綜合性測試套件來實現完整規範的廣泛互動操作性，完整規範的目標日期為2014年。2011年1月，WHATWG將其「HTML5」活動標準重新命名為「HTML」。W3C仍然繼續其發布HTML5的專案。</dd></dl><dl><dt>2012年 HTML5 – 候選推薦</dt>
<dd>2012年7月，WHATWG和W3C的工作產生一定程度的分離。W3C繼續HTML5規範工作，重點放在單一明確的標準上，這被WHATWG稱為「快照」。WHATWG組織則將HTML5作為一個「活動標準」（Living Standard）。活動標準的概念是從未完成但永遠保持更新與改進，可以提姆加新特性，但功能點不會被刪除。</dd></dl><dl><dd>2012年12月，W3C指定HTML5作為候選推薦階段。該階段的標準為「兩個100％完成，完全實現互動操作」。</dd></dl><dl><dt>2014年 HTML5 – 提案推薦與推薦</dt>
<dd>2014年9月，HTML5進入提案推薦階段。</dd>
<dd>2014年10月28日，HTML5作為穩定W3C推薦標準發布，這意味著HTML5的標準化已經完成。</dd></dl><h4><span id="XHTML.E7.89.88.E6.9C.AC"></span><span id="XHTML版本">XHTML版本</span></h4>

<p>XHTML是使用XML 1.0覆寫自HTML 4.01的獨立語言。它不再被作為單獨標準開發。
</p>
<ul><li>XHTML 1.0， 2000年1月26日作為W3C推薦標準發布。修訂版於2002年8月1日發布，它提供與HTML 4.0和4.01相同的三個變化，這些變化被重新在XML中制定。</li>
<li>XHTML 1.1，基於XHTML 1.0 嚴格版，2001年5月31日 作為W3C推薦標準發布。修訂版可使用模組化XHTML（頁面存檔備份，存於網際網路檔案館）的模組，2001年4月10日作為W3C推薦標準發布。</li>
<li>XHTML 2.0為工作草案，但為支援HTML5與XHTML5的工作，此草案被放棄。 XHTML 2.0與XHTML 1.x不相容，因此更確切的說這是一個XHTML風格的新語言而不是XHTML 1.x的更新。</li>
<li>在HTML5草案中規定一個XHTML語法，稱為「XHTML5.1」。</li></ul><h2><span id=".E6.A0.87.E8.AE.B0"></span><span id="标记">標記</span></h2>
<p>HTML標記包含標籤（及其屬性）、基於字元的資料類型、字元參照和實體參照等幾個關鍵部分。HTML標籤是最常見的，通常成對出現，比如<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>h1</span><span>&gt;</span></code>與<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;/</span><span>h1</span><span>&gt;</span></code>。這些成對出現的標籤中，第一個標籤是開始標籤，第二個標籤是結束標籤。兩個標籤之間為元素的內容，有些標籤沒有內容，為空元素，如<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>img</span><span>&gt;</span></code>。
</p><p>HTML另一個重要組成部分為<span data-orig-title="文档类型声明" data-lang-code="en" data-lang-name="英語" data-foreign-title="document type declaration"><span>文件類型聲明</span></span>，這會觸發標準模式彩現。
</p><p>以下是一個經典的Hello World程式的例子：
</p>

<p><code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>html</span><span>&gt;</span></code>和<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;/</span><span>html</span><span>&gt;</span></code>之間的文字描述網頁，<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>body</span><span>&gt;</span></code>和<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;/</span><span>body</span><span>&gt;</span></code>之間的文字為可視頁面內容。標記文字<span lang="en"><code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>title</span><span>&gt;</span>This is a title<span>&lt;/</span><span>title</span><span>&gt;</span></code></span>定義了瀏覽器的頁面標題。
</p><p>文件標記類型<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;!DOCTYPE html&gt;</span></code>用於HTML5。 如果未進行聲明，瀏覽器會使用「怪異模式」進行彩現。</p>
<h3><span id=".E5.85.83.E7.B4.A0"></span><span id="元素">元素</span></h3>

<p>HTML文件由巢狀的HTML元素構成。它們用HTML標籤表示，包含於尖括號中，如<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>p</span><span>&gt;</span></code></p><p>在一般情況下，一個元素由一對標籤表示：「開始標籤」<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>p</span><span>&gt;</span></code>與「結束標籤」<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;/</span><span>p</span><span>&gt;</span></code>。元素如果含有文字內容，就被放置在這些標籤之間。
</p><p>在開始與結束標籤之間也可以封裝另外的標籤，包括標籤與文字的混合。這些巢狀元素是父元素的子元素。
</p><p>開始標籤也可包含標籤屬性。這些屬性有諸如標識文件區段、將樣式資訊繫結到文件演示和為一些如<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>img</span><span>&gt;</span></code>等的標籤嵌入圖像、參照圖像來源等作用。
</p><p>一些元素如換行符<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>br</span><span>&gt;</span></code>，不允許嵌入任何內容，無論是文字或其他標籤。這些元素只需一個單一的空標籤（類似於一個開始標籤），無需結束標籤。
</p><p>許多標籤是可選的，尤其是那些很常用的段落元素<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>p</span><span>&gt;</span></code>的閉合端標籤。HTML瀏覽器或其他媒介可以從上下文辨識出元素的閉合端以及由HTML標準所定義的結構規則。這些規則非常複雜，不是大多數HTML編碼人員可以完全理解的。
</p><p>因此，一個HTML元素的一般形式為：<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>tag</span> <span>attribute1</span><span>=</span><span>"value1"</span> <span>attribute2</span><span>=</span><span>"value2"</span><span>&gt;</span>''content''<span>&lt;/</span><span>tag</span><span>&gt;</span></code>。一些HTML元素被定義為空元素，其形式為<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>tag</span> <span>attribute1</span><span>=</span><span>"value1"</span> <span>attribute2</span><span>=</span><span>"value2"</span><span>&gt;</span></code>。空元素不能封裝任何內容。例如<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>br</span><span>&gt;</span></code>標籤或行內標籤<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>img</span><span>&gt;</span></code>。一個HTML元素的名稱即為標籤使用的名稱。注意，結束標籤的名稱前面有一個斜槓「/」，空元素不需要也不允許結束標籤。如果元素屬性未標明，則使用其預設值。
</p>
<h4><span id=".E4.BE.8B.E5.AD.90"></span><span id="例子">例子</span></h4>
<p>HTML文件的頁首：<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>head</span><span>&gt;</span>...<span>&lt;/</span><span>head</span><span>&gt;</span></code>。標題被包含在頭部，例如：
</p>

<p>標題：HTML標題由<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>h1</span><span>&gt;</span></code>到<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>h6</span><span>&gt;</span></code>六個標籤構成，字型由大到小遞減：
</p>
<p>
段落：</p>
<p>換行：<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>br</span><span>&gt;</span></code>。<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>br</span><span>&gt;</span></code>與<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>p</span><span>&gt;</span></code>之間的差異是<code>br</code>換行但不改變頁面的語意結構，而<code>p</code>部分的頁面成段。
</p>

<p>連結：使用<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>a</span><span>&gt;</span></code>標籤來建立連結。<code>href</code>屬性包含連結的URL位址。
</p>

<p>注釋：
</p>
<p> 注釋有助於理解標記，但它不會在網頁上顯示。
</p><p>HTML中存在以下幾種類型的標記元素：
</p>
<dl><dt>用於文字的結構式標記</dt>
<dd>例如，<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>h2</span><span>&gt;</span>羽毛球<span>&lt;/</span><span>h2</span><span>&gt;</span></code>將「羽毛球」定義為二級標題。結構式標記不指示任何特定的彩現，但大多數網頁瀏覽器都會採用元素格式的預設樣式。要在內容上實現進一步的風格可以使用階層式樣式表（CSS）。</dd>
<dt>用於文字外觀的表現式<b>標記</b>，不論其目的</dt>
<dd>例如，<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr">'''粗體'''</code>表示視覺輸出裝置應將文字「<b>粗體</b>」加粗，但如果裝置無法做到這一點（如朗讀文字的聽覺裝置），就不會發生什麼現象。在這種情況下，<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr">'''粗體'''</code>與<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr">''斜體''</code>也可能有相同的視覺效果，但在本質上它們更加語意化。如同<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr">'''加強文字'''</code>與<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr">''強調文字''</code>的區別。為支援CSS的使用，大多數表現式標記在HTML 4.0規範中不再被推薦使用。</dd></dl><dl><dt>超文字標記使文件的一部分連結到其他文件</dt>
<dd>錨元素在文件中建立超連結，其<code>href</code>屬性設定連結的目標URL。例如：HTML標記<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>a</span> <span>href</span><span>=</span><span>"https://zh.wikipedia.org/"</span><span>&gt;</span>中文維基百科<span>&lt;/</span><span>a</span><span>&gt;</span></code>會將文字"<span>中文維基百科（頁面存檔備份，存於網際網路檔案館）</span>"彩現為超連結。要將圖片彩現為超連結，<code>img</code>元素要作為內容插入到<code>a</code>元素中：<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>a</span> <span>href</span><span>=</span><span>"https://example.org"</span><span>&gt;&lt;</span><span>img</span> <span>src</span><span>=</span><span>"image.gif"</span> <span>alt</span><span>=</span><span>"說明文字"</span> <span>width</span><span>=</span><span>"50"</span> <span>height</span><span>=</span><span>"50"</span> <span>border</span><span>=</span><span>"0"</span><span>&gt;&lt;/</span><span>a</span><span>&gt;</span></code>。</dd></dl><h4><span id=".E5.B1.9E.E6.80.A7"></span><span id="属性">屬性</span></h4>

<p>大多數元素的屬性以「名稱-值」的形式成對出現，由「=」分離並寫在開始標籤元素名之後。值一般由單引號或雙引號包圍，有些值的內容包含特定字元，在HTML中可以去掉引號（XHTML不行）。不加引號的屬性值被認為是不安全的。有些屬性無需成對出現，僅存在於開始標籤中即可影響元素，如<code>img</code> 元素的<code>ismap</code> 屬性。
</p><p>許多元素存在一些共通的屬性：
</p>
<ul><li><code>id</code>屬性為元素提供了在全文件內的唯一標識。它用於辨識元素，以便樣式表可以改變其表現屬性，指令碼可以改變、顯示或刪除其內容或格式化。對於提姆加到頁面的URL，它為元素提供了一個全域唯一標識，通常為頁面的子章節。例如，ID "屬性"對於<code>https://zh.wikipedia.org/wiki/HTML#属性</code></li>
<li><code>class</code>屬性提供一種將類似元素分類的方式。常被用於語意化或格式化。例如，一個HTML文件可指定類<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>class</span><span>="</span><span>標記</span><span>"</span><span>&gt;</span></code>來表明所有具有這一類值的元素都從屬於文件的主文字。格式化後，這樣的元素可能會聚集在一起，並作為頁面註腳而不會出現在HTML代碼中。類屬性也被用於微格式的語意化。類值也可進行多聲明。如<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>class</span><span>="</span><span>標記</span> <span>重要</span><span>"</span><span>&gt;</span></code>將元素同時放入<code>標記</code>與<code>重要</code>兩類中。</li>
<li><code>style</code>屬性可以將表現性質賦予一個特定元素。比起使用<code>id</code>或<code>class</code> 屬性從樣式表中選擇元素，「style」被認為是一個更好的做法，儘管有時這對一個簡單、專用或特別的樣式顯得太繁瑣。</li>
<li><code>title</code>屬性用於給元素一個附加的說明。 大多數瀏覽器中這一屬性顯示為<span data-orig-title="工具提示" data-lang-code="en" data-lang-name="英語" data-foreign-title="Tooltip"><span>工具提示</span></span>。</li>
<li><code>lang</code>屬性用於辨識元素內容的語言，它可能與文件的主要語言不同。例如，在中文文件中：  </li></ul><p>縮寫元素<code>abbr</code>可用於說明一些屬性：
</p>

<p>這個例子顯示為<abbr id="anId" class="jargon" style="color:purple;" title="超文本標記語言">HTML</abbr>； 在大多數瀏覽器中，游標指向縮寫時會顯示標題文字「超文本標記語言」。
</p><p>大多數元素採用與語言相關的屬性<code>dir</code> 來指定文字方向，如 "rtl"採用從右到左的文字，比如阿拉伯語、波斯語以及希伯來語。
</p>
<h3><span id=".E5.AD.97.E7.AC.A6.E4.B8.8E.E5.AE.9E.E4.BD.93.E5.BC.95.E7.94.A8"></span><span id="字符与实体引用">字元與實體參照</span></h3>

<p>在4.0版本中，HTML定義了一系列共252個字元實體參照和1,114,050個字元值參考。二者都支援單個字元透過簡單的標記寫入。文字字元與其對應的標記彩現的效果相同。
</p><p>用這種方式「跳脫」字元的能力允許字元<code>&lt;</code>與<code>&amp;</code>（當分別被寫作<code>&amp;lt;</code>和<code>&amp;amp;</code>時）被理解為字元資料而不是標記。例如<code>&lt;</code>通常為標籤的開頭，<code>&amp;</code>通常為字元實體參照與數字字元參照的開頭；<code>&amp;amp;</code>或<code>&amp;#x26;</code>或<code>&amp;#38;</code>將<code>&amp;</code>作為元素的內容或屬性的值。雙引號字元<code>"</code>在不被用於屬性值的標示時必須跳脫為<code>&amp;quot;</code>或<code>&amp;#x22;</code>或<code>&amp;#34;</code>；相等地，當於單引號字元<code>'</code>不被用於屬性值的標示時，也必須跳脫為<code>&amp;#x27;</code>或<code>&amp;#39;</code>（或HTML5與XHTML文件中的<code>&amp;apos;</code>）。
</p><p>如果文件作者忽略了跳脫這樣的字元，一些瀏覽器會嘗試透過上下文猜測他們的意圖。如果結果仍為無效標記，這會使其他瀏覽器或使用者代理難以存取到該文件，並使它們嘗試使用搜尋和索引來解析該文件。
</p><p>那些難以輸入或不在該文件字元編碼中的字元也可透過跳脫來實現。例如通常只在西歐或南美的鍵盤出現的重音符<code>e</code>（<code>é</code>），可以在HTML文件中用作實體參照<code>&amp;eacute;</code> 或數字參照<code>&amp;#xE9;</code>或<code>&amp;#233;</code>。 諸如UTF-8的Unicode字元編碼與所有的現代瀏覽器相容並允許直接存取全球書寫系統幾乎所有的字元 。
</p>
<h3><span id=".E6.95.B0.E6.8D.AE.E7.B1.BB.E5.9E.8B"></span><span id="数据类型">資料類型</span></h3>
<p>HTML為元素內容定義了多種資料類型，如指令碼資料、樣式表資料以及許多屬性值的類型，包括ID、名稱、URI、數字長度單位、語言、媒體描述符顏色、字元編碼、日期和時間等等。所有這些資料類型都是字元資料的特殊化。
</p>
<h3><span id=".E6.96.87.E6.A1.A3.E7.B1.BB.E5.9E.8B.E5.A3.B0.E6.98.8E"></span><span id="文档类型声明">文件類型聲明</span></h3>
<p>HTML文件需要以<span data-orig-title="文档类型声明" data-lang-code="en" data-lang-name="英語" data-foreign-title="document type declaration"><span>文件類型聲明</span></span>（英語非正式說法「doctype」）開頭。在瀏覽器中，文件類型聲明有助於確定彩現模式——特別是是否使用怪異模式。
</p><p>文件類型聲明的初衷是透過基於文件類型定義（DTD）的SGML工具來解析並驗證HTML文件。
</p><p>HTML5未定義DTD，所以在HTML5中文件類型聲明更為簡短：</p>

<p>HTML 4文件類型聲明舉例：
</p>

<p>該聲明參照HTML 4.01「嚴格」版的DTD。基於SGML的驗證器可讀取DTD，正確解析這些文件並執行驗證。在現代瀏覽器中，一個有效的文件類型啟用標準模式有別於怪異模式。
</p><p>另外，HTML 4.01提供過渡型與框架集型的DTD。過渡型涵蓋最廣，它可整合當前以及老舊或「過時」的標籤，而嚴格型DTD排除了過時的標籤。框架集擁有所有構建框架所需的標籤以及過渡型的標籤。</p>
<h2><span id=".E8.AF.AD.E4.B9.89.E5.8C.96HTML"></span><span id="语义化HTML">語意化HTML</span></h2>

<p>語意化HTML是一種編寫HTML的方式，它強調編碼資訊的含義在其格式（樣子）之上。HTML從創立之初就包括語意化標記，但也包括標識性標記如<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>font</span><span>&gt;</span></code>、<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>i</span><span>&gt;</span></code>和<code class="mw-highlight mw-highlight-lang-html mw-content-ltr" dir="ltr"><span>&lt;</span><span>center</span><span>&gt;</span></code>標籤。也存在一些語意上中立的span與div標籤。自1990年代末CSS開始應用於大多數瀏覽器，網頁製作者就被鼓勵使用CSS以便呈現與內容分離。
</p><p>在2001年一次對語意網的討論中，提姆·柏內茲-李等人給出了一種的方法，使智慧型軟體「代理人」可能有一天會自動抓取網頁進行尋找、過濾並將之前不相關的聯絡起來。這種代理甚至在現在也不普遍，但一些Web 2.0、混搭和價格比較網站的想法可能會結束。這些網頁應用程式的混合與柏內茲-李的語意代理人的之間主要區別基於以下事實：當前的聚合與資訊混合通常由網頁開發者設計，他們早已知道網路位置和他們希望混搭、比較與結合的特定資料的API語意。
</p><p>網頁代理的一個重要類型是網路爬蟲或搜尋引擎蜘蛛。這些軟體代理依賴於它們發現的網頁的語意解析度，因為它們一天要使用各種技術與演算法來讀取和索引數百萬個網頁並給網頁使用者提供搜尋工具，沒有這些全球資訊網的有效性就會大大降低。
</p><p>為使搜尋引擎蜘蛛評估它們在HTML文件中發現的文字片段的重要性，也為那些建立標記等混合的人與更多的自動化代理工具，HTML中的語意結構需要廣泛一致地應用從而將文字的含義呈現給瀏覽者。</p><p>表示性標記在當前的HTML和XHTML推薦中不被鼓勵使用。舊版本HTML中的大多數表示功能不再被允許使用，因為它們導致可存取性變差、站點維護成本變高和文件大小變大。</p><p>好的語意化HTML也改善了網頁文件的可存取性（參見<span data-orig-title="网页内容无障碍指南" data-lang-code="en" data-lang-name="英語" data-foreign-title="Web Content Accessibility Guidelines"><span>網頁內容無障礙指南</span></span>）。例如，當螢幕閱讀器或音訊瀏覽器可以正確判定一個文件的結構時，視覺障礙使用者不會再因閱讀重複或無關的資訊而浪費時間。
</p>
<h2><span id=".E5.88.86.E5.8F.91"></span><span id="分发">分發</span></h2>
<p>HTML文件分發的方法和其他電腦檔案相同。不過，它們最常透過網頁伺服器的超文字傳輸協定或電子郵件傳輸。
</p>
<h3><span id="HTTP">HTTP</span></h3>

<p>全球資訊網主要由從伺服器透過HTTP協定向瀏覽器傳送的HTML文件組成。但是，HTTP也可以被用於傳輸HTML之外的資料，例如圖像、聲音和其他內容。為使瀏覽器了解如何處理接收到的文件，在傳輸文件時必須同時傳遞檔案類型。這種元資料包含MIME類型（對於HTML 4.01或更早版本是<tt>text/html</tt>，而對於XHTML 1.0或之後的版本是<tt>application/xhtml+xml</tt>），以及字元編碼（參見HTML字元編碼方式）。
</p><p>在現在的瀏覽器中，和HTML文件一起傳送的MIME類型影響文件的解讀方式。和XHTML MIME類型一起傳送的文件被認為是良構的XML，而語法錯誤會導致瀏覽器無法呈現文件。完全相同的文件如果和HTML MIME類型一起傳送，則可能被正常顯示，因為瀏覽器對HTML的語法檢查更加鬆懈些。
</p><p>W3C的推薦指出，遵循規定的推薦指引的XHTML 1.0文件可標記二者任一的MIME類型。XHTML 1.1還指出，XHTML 1.1文件應標有兩種MIME類型。
</p>
<h3><span id="HTML.E9.82.AE.E4.BB.B6"></span><span id="HTML邮件">HTML郵件</span></h3>

<p>大多數圖形電子郵件客戶端允許使用HTML的子集（經常界限不清）提供格式化和無法使用純文字的語意標記。這可能包括印刷資訊，如彩色標題、強調和參照文字、內嵌圖片和圖表等。許多這樣的客戶包含一個編寫HTML電子郵件訊息的圖形化使用者介面編輯器和一個用於顯示的彩現引擎。在郵件中使用HTML受到了一些相容性的批評，由於一些盲人或具有視覺障礙的人的存取問題，這種方式有利於偽裝的釣魚攻擊。因其訊息大小超過明文，所以它可混淆垃圾郵件過濾器。
</p>
<h3><span id=".E5.91.BD.E5.90.8D.E8.A7.84.E5.88.99"></span><span id="命名规则">命名規則</span></h3>
<p>最常用的電腦副檔名為<tt>.html</tt>，通用縮寫為<tt>.htm</tt>。它起源於某些早期作業系統與檔案系統，如DOS以及FAT資料結構的局限性，它將副檔名限制為3個字母。
</p>
<h3><span id="HTML.E5.BA.94.E7.94.A8.E7.A8.8B.E5.BA.8F"></span><span id="HTML应用程序">HTML應用程式</span></h3>

<p>HTML應用程式（HTA；副檔名".hta"）是一個Microsoft Windows應用程式，它在瀏覽器中使用HTML和動態HTML提供應用程式圖形介面。正規HTML檔案被限制在瀏覽器的安全模型中，只能分別透過網頁伺服器和網頁物件與站點Cookie進行通信和操作。HTA作為完全受信任的應用程式執行，因此擁有更多的權限，如建立/編輯/刪除檔案與登錄檔項。因為它們在瀏覽器安全模式之外操作，所以HTA不能透過HTTP執行，必須下載（就像EXE檔案）並在本地檔案系統執行。
</p>
<h2><span id=".E6.89.80.E8.A7.81.E5.8D.B3.E6.89.80.E5.BE.97.E7.BC.96.E8.BE.91.E5.99.A8"></span><span id="所见即所得编辑器">所見即所得編輯器</span></h2>
<p>所見即所得編輯器使用圖形化使用者介面（GUI）顯示HTML文件，常常類似於文書處理器，所以使用者可以設計一切。編者面對的是文件，而不是代碼，所以作者並不需要太多的HTML知識。這種所見即所得的編輯模式一直受到詬病，主要因為它生成的代碼品質不高；也有人主張將其改變至WYSIWYM模型（所見即所指）。
</p>
<h2><span id=".E5.8F.82.E8.A7.81"></span><span id="参见">參見</span></h2>

<h2><span id=".E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE"></span><span id="参考文献">參考文獻</span></h2>

<h2><span id=".E5.BB.B6.E4.BC.B8.E9.98.85.E8.AF.BB"></span><span id="延伸阅读">延伸閱讀</span></h2>
<ul><li><span title="英語">（英文）</span>WHATWG當前的HTML標準（頁面存檔備份，存於網際網路檔案館）</li>
<li><span title="英語">（英文）</span>W3C制定的HTML 5.2，HTML的未來版本（頁面存檔備份，存於網際網路檔案館）</li>
<li><span title="英語">（英文）</span>W3C制定的HTML 5.1，最近完成的規範（2016年11月1日）（頁面存檔備份，存於網際網路檔案館）</li>
<li><span title="英語">（英文）</span>戴夫·拉格特介紹HTML（頁面存檔備份，存於網際網路檔案館）</li>
<li><span title="英語">（英文）</span>提姆·柏內茲-李對網頁的新定義</li>
<li><span title="英語">（英文）</span>HTML檢視器 （頁面存檔備份，存於網際網路檔案館）</li>
<li><span title="英語">（英文）</span>線上 HTML 檢視器 （頁面存檔備份，存於網際網路檔案館）</li>
<li>《HTML5探秘》，電子工業出版社，Mark Pilgrim著，常可、胡金埔、趙靜譯，ISBN 9787121124082。</li></ul>
<p class="mw-empty-elt">

</p>
<!-- 
NewPP limit report
Parsed by mw2450
Cached time: 20230504163943
Cache expiry: 26421
Reduced expiry: true
Complications: [show‐toc]
CPU time usage: 1.346 seconds
Real time usage: 2.770 seconds
Preprocessor visited node count: 13609/1000000
Post‐expand include size: 946701/2097152 bytes
Template argument size: 46191/2097152 bytes
Highest expansion depth: 23/100
Expensive parser function count: 193/500
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 103874/5000000 bytes
Lua time usage: 0.578/10.000 seconds
Lua memory usage: 26521017/52428800 bytes
Number of Wikibase entities loaded: 1/400
--><!--
Transclusion expansion time report (%,ms,calls,template)
100.00% 2232.112      1 -total
 39.72%  886.498     39 Template:Code
 17.30%  386.254     15 Template:Navbox
 13.70%  305.754      1 Template:Reflist
 10.06%  224.458     63 Template:Cite_web
  5.05%  112.730      1 Template:W3C规范和标准
  4.12%   91.920     48 Template:Link-en
  3.54%   78.960      1 Template:网页浏览器
  3.49%   78.000      1 Template:Lang-en
  3.40%   75.833      1 Template:Navbox_with_collapsible_sections
-->
**超文本標記語言**（英語：**H**yper**T**ext **M**arkup **L**anguage，簡稱：**HTML**）是一種用於建立網頁的標準標記語言。HTML 是一種基礎技術，常與 CSS、JavaScript 一起被眾多網站用於設計網頁、網頁應用程式以及行動應用程式的使用者介面。網頁瀏覽器可以讀取 HTML 檔案，並將其彩現成視覺化網頁。HTML 描述了一個網站的結構語意隨著線索的呈現，使之成為一種標記語言而非程式語言。

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

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

## 歷史

### 發展

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 日完成標準化。

### 版本時間線

#### 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（國際化）

#### HTML 3

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

#### 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 JTC 1/SC 34 域（ISO/IEC 聯合技術委員會 1、小組委員會 34 – 文件描述與處理語言）。

#### HTML 5

　
: **2014 年 10 月 28 日**
: HTML 5 作為 W3C 推薦標準發布。

### 草案時間線

**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 的標準化已經完成。

#### 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 標籤是最常見的，通常成對出現，比如 `<h1>` 與 `</h1>`。這些成對出現的標籤中，第一個標籤是開始標籤，第二個標籤是結束標籤。兩個標籤之間為元素的內容，有些標籤沒有內容，為空元素，如 `<img>`。

HTML 另一個重要組成部分為文件類型聲明，這會觸發標準模式彩現。

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

`<html>` 和 `</html>` 之間的文字描述網頁，`<body>` 和 `</body>` 之間的文字為可視頁面內容。標記文字 `<title>This is a title</title>` 定義了瀏覽器的頁面標題。

文件標記類型 `<!DOCTYPE html>` 用於 HTML5。 如果未進行聲明，瀏覽器會使用「怪異模式」進行彩現。

### 元素

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

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

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

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

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

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

因此，一個 HTML 元素的一般形式為：`<tag attribute1="value1" attribute2="value2">''content''</tag>`。一些 HTML 元素被定義為空元素，其形式為 `<tag attribute1="value1" attribute2="value2">`。空元素不能封裝任何內容。例如 `<br>` 標籤或行內標籤 `<img>`。一個 HTML 元素的名稱即為標籤使用的名稱。注意，結束標籤的名稱前面有一個斜槓「/」，空元素不需要也不允許結束標籤。如果元素屬性未標明，則使用其預設值。

#### 例子

HTML 文件的頁首：`<head>...</head>`。標題被包含在頭部，例如：

標題：HTML 標題由 `<h1>` 到 `<h6>` 六個標籤構成，字型由大到小遞減：

段落：

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

連結：使用 `<a>` 標籤來建立連結。`href` 屬性包含連結的 URL 位址。

注釋：

 注釋有助於理解標記，但它不會在網頁上顯示。

HTML 中存在以下幾種類型的標記元素：

**用於文字的結構式標記**
: 例如，`<h2>羽毛球</h2>` 將「羽毛球」定義為二級標題。結構式標記不指示任何特定的彩現，但大多數網頁瀏覽器都會採用元素格式的預設樣式。要在內容上實現進一步的風格可以使用階層式樣式表（CSS）。

**用於文字外觀的表現式**標記**，不論其目的**
: 例如，`'''粗體'''` 表示視覺輸出裝置應將文字「**粗體**」加粗，但如果裝置無法做到這一點（如朗讀文字的聽覺裝置），就不會發生什麼現象。在這種情況下，`'''粗體'''` 與 `''斜體''` 也可能有相同的視覺效果，但在本質上它們更加語意化。如同 `'''加強文字'''` 與 `''強調文字''` 的區別。為支援 CSS 的使用，大多數表現式標記在 HTML 4.0 規範中不再被推薦使用。

**超文字標記使文件的一部分連結到其他文件**
: 錨元素在文件中建立超連結，其 `href` 屬性設定連結的目標 URL。例如：HTML 標記 `<a href="https://zh.wikipedia.org/">中文維基百科</a>` 會將文字 " 中文維基百科（頁面存檔備份，存於網際網路檔案館）" 彩現為超連結。要將圖片彩現為超連結，`img` 元素要作為內容插入到 `a` 元素中：`<a href="https://example.org"><img src="image.gif" alt="說明文字" width="50" height="50" border="0"></a>`。

#### 屬性

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

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

* `id` 屬性為元素提供了在全文件內的唯一標識。它用於辨識元素，以便樣式表可以改變其表現屬性，指令碼可以改變、顯示或刪除其內容或格式化。對於提姆加到頁面的 URL，它為元素提供了一個全域唯一標識，通常為頁面的子章節。例如，ID "屬性" 對於 `https://zh.wikipedia.org/wiki/HTML#属性`
* `class` 屬性提供一種將類似元素分類的方式。常被用於語意化或格式化。例如，一個 HTML 文件可指定類 `<class="標記">` 來表明所有具有這一類值的元素都從屬於文件的主文字。格式化後，這樣的元素可能會聚集在一起，並作為頁面註腳而不會出現在 HTML 代碼中。類屬性也被用於微格式的語意化。類值也可進行多聲明。如 `<class="標記 重要">` 將元素同時放入 `標記` 與 `重要` 兩類中。
* `style` 屬性可以將表現性質賦予一個特定元素。比起使用 `id` 或 `class` 屬性從樣式表中選擇元素，「style」被認為是一個更好的做法，儘管有時這對一個簡單、專用或特別的樣式顯得太繁瑣。
* `title` 屬性用於給元素一個附加的說明。 大多數瀏覽器中這一屬性顯示為工具提示。
* `lang` 屬性用於辨識元素內容的語言，它可能與文件的主要語言不同。例如，在中文文件中：

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

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

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

### 字元與實體參照

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

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

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

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

### 資料類型

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

### 文件類型聲明

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 從創立之初就包括語意化標記，但也包括標識性標記如 `<font>`、`<i>` 和 `<center>` 標籤。也存在一些語意上中立的 span 與 div 標籤。自 1990 年代末 CSS 開始應用於大多數瀏覽器，網頁製作者就被鼓勵使用 CSS 以便呈現與內容分離。

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

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

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

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

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

## 分發

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

### 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 類型。

### HTML 郵件

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

### 命名規則

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

### HTML 應用程式

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

## 所見即所得編輯器

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

## 參見

## 參考文獻

## 延伸閱讀

* （英文）WHATWG 當前的 HTML 標準（頁面存檔備份，存於網際網路檔案館）
* （英文）W3C 制定的 HTML 5.2，HTML 的未來版本（頁面存檔備份，存於網際網路檔案館）
* （英文）W3C 制定的 HTML 5.1，最近完成的規範（2016 年 11 月 1 日）（頁面存檔備份，存於網際網路檔案館）
* （英文）戴夫・拉格特介紹 HTML（頁面存檔備份，存於網際網路檔案館）
* （英文）提姆・柏內茲 - 李對網頁的新定義
* （英文）HTML 檢視器 （頁面存檔備份，存於網際網路檔案館）
* （英文）線上 HTML 檢視器 （頁面存檔備份，存於網際網路檔案館）
* 《HTML5 探秘》，電子工業出版社，Mark Pilgrim 著，常可、胡金埔、趙靜譯，ISBN 9787121124082。
.htm