HTML

發展

1980年，物理學家提姆·柏內茲-李在歐洲核子研究中心（CERN）在承包工程期間，為使CERN的研究人員使用並共用文件，他提出並建立原型系統ENQUIRE。1989年，柏內茲-李在一份備忘錄中提出一個基於網際網路的超文字系統。他制定HTML並在1990年底寫出瀏覽器和伺服器軟體。同年，柏內茲-李與CERN的資料系統工程師羅伯特·卡里奧聯合為專案申請資助，但未被CERN正式批准。在他的個人筆記中柏內茲-李列舉「一些使用超文字的領域」，並把百科全書列為第一項。
HTML的首個公開描述出現於一個名為「HTML標籤」的檔案中，由提姆·柏內茲-李於1991年底提及。它描述18個元素，包括HTML初始的、相對簡單的設計。除了超連結標籤外，其他設計都深受CERN內部一個以標準通用標記語言（SGML）為基礎的檔案格式SGMLguid的影響。這些元素在HTML 4中仍有11個存在。
柏內茲-李認為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標記包含標籤（及其屬性）、基於字元的資料類型、字元參照和實體參照等幾個關鍵部分。HTML標籤是最常見的，通常成對出現，比如<h1>與</h1>。這些成對出現的標籤中，第一個標籤是開始標籤，第二個標籤是結束標籤。兩個標籤之間為元素的內容，有些標籤沒有內容，為空元素，如<img>。
HTML另一個重要組成部分為文件類型聲明，這會觸發標準模式彩現。
以下是一個經典的Hello World程式的例子：
1 <!DOCTYPE html>2 <html>3   <head>4     <title>This is a title</title>5   </head>6   <body>7     <p>Hello world!</p>8   </body>9 </html>
<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元素的名稱即為標籤使用的名稱。注意，結束標籤的名稱前面有一個斜槓「/」，空元素不需要也不允許結束標籤。如果元素屬性未標明，則使用其預設值。

字元與實體參照

在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中文件類型聲明更為簡短：
<!DOCTYPE html>
HTML 4文件類型聲明舉例：
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
該聲明參照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模型（所見即所指）。