HTML
历史
W3C制作的早期HTML标志
发展
蒂姆·伯纳斯-李
1980年,物理学家蒂姆·伯纳斯-李在欧洲核子研究中心(CERN)在承包工程期间,为使CERN的研究人员使用并共享文档,他提出并创建了原型系统 ENQUIRE ( 英语 : ENQUIRE ) 。1989年,伯纳斯-李在一份备忘录中提出了一个基于互联网的超文本系统 。他规定了HTML并在1990年底写出了浏览器和服务器软件。同年,伯纳斯-李与CERN的数据系统工程师罗伯特·卡里奥联合为项目申请资助,但未被CERN正式批准。在他的个人笔记中 伯纳斯-李列举了“一些使用超文本的领域”,并把百科全书列为首位 。
HTML的首个公开描述出现于一个名为“HTML标签”的文件中,由蒂姆·伯纳斯-李于1991年底提及 。它描述了18个元素,包括HTML初始的、相对简单的设计。除了超链接标签外,其他设计都深受CERN内部一个以标准通用标记语言(SGML)为基础的文件格式SGMLguid的影响。这些元素在HTML 4中仍有11个存在 。
伯纳斯-李认为HTML是SGML的一个应用程序。1993年中期互联网工程任务组(IETF)发布了首个HTML规范的提案:“超文本标记语言(HTML)”互联网草案,由伯纳斯-李与 丹·康纳利 ( 英语 : Dan Connolly (computer scientist) ) 撰写。其中包括一个SGML文档类型定义来定义语法 。草案于6个月后过期,不过值得注意的是其对NCSA Mosaic浏览器自定义标签从而将在线图像嵌入的行为的认可,这反映了IETF把标准立足于成功原型的理念 。同样, 戴夫·拉基特 ( 英语 : Dave Raggett ) 在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日完成标准化 。
版本时间线
草案时间线
HTML5的Logo
XHTML版本
XHTML是使用XML1.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另一个重要组成部分为文档类型声明 ( 英语 : document type declaration ) ,这会触发标准模式渲染。
下面是一个经典的Hello World程序的例子,一个用于比较的编程语言、脚本语言和标记语言的通用测试。这个例子用9行代码写成:
1 2 3 4 这是标题title>5 head>6 7
Hello world!p>8 body>9 html>
( 和之间的文本描述网页,和之间的文本为可视页面内容。标记文本" 这是标题 " 定义了浏览器的页面标题。)
文档标记类型 用于HTML5。 如果未进行声明,浏览器会使用“怪异模式”进行渲染。
元素
HTML文档由嵌套的HTML元素构成。它们用HTML标签表示,包含于尖括号中,如
在一般情况下,一个元素由一对标签表示:“开始标签”
与“结束标签”
。元素如果含有文本内容,就被放置在这些标签之间。
在开始与结束标签之间也可以封装另外的标签,包括标签与文本的混合。这些嵌套元素是父元素的子元素。
开始标签也可包含标签属性。这些属性有诸如标识文档区段、将样式信息绑定到文档演示和为一些如 等的标签嵌入图像、引用图像来源等作用。
一些元素如换行符 ,不允许嵌入任何内容,无论是文字或其他标签。这些元素只需一个单一的空标签(类似于一个开始标签),无需结束标签。
许多标签是可选的,尤其是那些很常用的段落元素的闭合端标签。HTML浏览器或其他媒介可以从上下文识别出元素的闭合端以及由HTML标准所定义的结构规则。这些规则非常复杂,不是大多数HTML编码人员可以完全理解的。
因此,一个HTML元素的一般形式为: 内容标签> 。一些HTML元素被定义为空元素,其形式为 。空元素不能封装任何内容。例如 标签或内联标签 。一个HTML元素的名称即为标签使用的名称。注意,结束标签的名称前面有一个斜杠“/”,空元素不需要也不允许结束标签。如果元素属性未标明,则使用其默认值。
属性
大多数元素的属性以“名称-值”的形式成对出现,由“=”分离并写在开始标签元素名之后。值一般由单引号或双引号包围,有些值的内容包含特定字符,在HTML中可以去掉引号(XHTML不行) 。不加引号的属性值被认为是不安全的 。有些属性无需成对出现,仅存在于开始标签中即可影响元素 ,如 img 元素的 ismap 属性 。
许多元素存在一些共通的属性:
id 属性为元素提供了在全文档内的唯一标识。它用于识别元素,以便样式表可以改变其表现属性,脚本可以改变、显示或删除其内容或格式化。对于蒂姆加到页面的URL,它为元素提供了一个全局唯一标识,通常为页面的子章节。例如,ID "属性"对于 /wiki/HTML#属性
class 属性提供一种将类似元素分类的方式。常被用于语义化或格式化。例如,一个HTML文档可指定类 class="标记" 来表明所有具有这一类值的元素都从属于文档的主文本。格式化后,这样的元素可能会聚集在一起,并作为页面脚注而不会出现在HTML代码中。类属性也被用于微格式的语义化。类值也可进行多声明。如 class="标记 重要" 将元素同时放入"标记"与"重要"两类中。
style属性可以将表现性质赋予一个特定元素。比起使用id或class属性从样式表中选择元素,“style”被认为是一个更好的做法,尽管有时这对一个简单、专用或特别的样式显得太繁琐。
title属性用于给元素一个附加的说明。 大多数浏览器中这一属性显示为 工具提示 ( 英语 : Tooltip ) 。
lang属性用于识别元素内容的语言,它可能与文档的主要语言不同。例如,在中文文档中:
法语c"est la vie法国an>在法国的应用很普遍,意为“这就是生活” 。
缩写元素 abbr 可用于说明一些属性:
HTMLabbr>
这个例子显示为 HTML ; 在大多数浏览器中,光标指向缩写时会显示标题文字“超文本标记语言”。
大多数元素采用与语言相关的属性 dir 来指定文字方向,如 "rtl"采用从右到左的文本,比如阿拉伯语、波斯语以及希伯来语 。
字符与实体引用
在4.0版本中,HTML定义了一系列共252个字符实体引用和1,114,050个数字字符引用。二者都支持单个字符通过简单的标记写入。文字字符与其对应的标记渲染的效果相同。
用这种方式“转义”字符的能力允许字符 < 与 & (当分别被写作 < 和 & 时)被理解为字符数据而不是标记。例如 < 通常为标签的开头, & 通常为字符实体引用与数字字符引用的开头; & 或 & 或 & 将 & 作为元素的内容或属性的值。双引号字符 " 在不被用于属性值的标示时必须转义为 " 或 " 或 " ;相等地,当于单引号字符 " 不被用于属性值的标示时,也必须转义为 " 或 " (或HTML5与XHTML文档中的 " )。
如果文档作者忽略了转义这样的字符,一些浏览器会尝试通过上下文猜测他们的意图。如果结果仍为无效标记,这会使其他浏览器或用户代理难以访问到该文档,并使它们尝试使用搜索和索引来解析该文档。
那些难以输入或不在该文档字符编码中的字符也可通过转义来实现。例如通常只在西欧或南美的键盘出现的重音符 e ( é ),可以在HTML文档中用作实体引用 é 或数字引用 é 或 é 。 诸如UTF-8的Unicode字符编码与所有的现代浏览器兼容并允许直接访问全球书写系统几乎所有的字符 。
数据类型
HTML为元素内容定义了多种数据类型,如脚本数据、样式表数据以及许多属性值的类型,包括ID、名称、URI、数字长度单位、语言、媒体描述符颜色、字符编码、日期和时间等等。所有这些数据类型都是字符数据的特殊化。
文档类型声明
HTML文档需要以文档类型声明(英语非正式说法“doctype”)开头。在浏览器中,文档类型声明有助于确定渲染模式——特别是是否使用怪异模式。
文档类型声明的初衷是通过基于文档类型定义(DTD)的SGML工具来解析并验证HTML文档。
HTML5未定义DTD,所以在HTML5中文档类型声明更为简短:
HTML 4文档类型声明举例:
{dead link|date=六月 2017 |bot=InternetArchiveBot }}>
该声明引用HTML 4.01“严格”版的DTD。基于SGML的验证器可读取DTD,正确解析这些文档并执行验证。在现代浏览器中,一个有效的文档类型激活标准模式有别于怪异模式。
另外,HTML 4.01提供过渡型与框架集型的DTD。过渡型涵盖最广,它可集成当前以及老旧或“过时”的标签,而严格型DTD排除了过时的标签。框架集拥有所有构建框架所需的标签以及过渡型的标签。
语义化HTML
语义化HTML是一种编写HTML的方式,它强调编码信息的含义在其格式(样子)之上。HTML从创立之初就包括语义化标记 ,但也包括标识性标记如 、 和
标签。也存在一些语义上中立的span与div标签。自20世纪90年代末层叠样式表开始应用于大多数浏览器始,网页制作者就被鼓励使用CSS以便将介绍和内容分离 。
在2001年一次对语义网的讨论中,蒂姆·伯纳斯-李等人给出了一种的方法,使智能软件“代理人”可能有一天会自动抓取网页进行查找、过滤并将之前不相关的联系起来 。这种代理甚至在现在也不普遍,但一些Web 2.0的理念、混搭和价格比较网站可能会结束。这些网页应用程序的混合与伯纳斯-李的语义代理人的之间主要区别基于以下事实:当前的聚合与信息混合通常由网页开发者设计,他们早已知道网络位置和他们希望混搭、比较与结合的特定数据的API语义。
网页代理的一个重要类型是网络爬虫或搜索引擎蜘蛛。这些软件代理依赖于它们发现的网页的语义清晰度,因为它们一天要使用各种技术与算法来读取和索引数百万个网页并给网页用户提供搜索工具,没有这些万维网的有效性就会大大降低。
为使搜索引擎蜘蛛评估它们在HTML文档中发现的文本片段的重要性,也为那些创建标记等混合的人与更多的自动化代理工具,HTML中的语义结构需要广泛一致地应用从而将文本的含义呈现给浏览者。
表示性标记在当前的HTML和XHTML推荐中不被鼓励使用,HTML5中则被视为非法。
好的语义化HTML也改善了网页文档的可访问性(参见网页内容无障碍指南 ( 英语 : Web Content Accessibility Guidelines ) )。例如,当屏幕阅读器或音频浏览器可以正确判定一个文档的结构时,视觉障碍用户不会再因阅读重复或无关的信息而浪费时间。
分发
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的子集(经常界限不清)提供格式化和无法使用 纯文本 ( 英语 : Plain text ) 的语义标记。这可能包括印刷信息,如彩色标题、强调和引用文本、内嵌图片和图表等。许多这样的客户包含一个编写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模型(所见即所指)。
免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。
- 有价值
- 一般般
- 没价值