作为一个前端开发者,HTML应该是最熟悉不过。打开电脑浏览器,点击鼠标右键,选择查看源码,所看到的就是html文本。那么文档类型定义声明有哪几种,各有什么作用,HTML、XML、SGML各是什么,DTD、DOCTYPE又是什么?
1. 先来看两个简单的前端问题
1.HTML文档类型声明DCOTYPE的作用是什么?
<!DOCTYPE>
声明位于html文档的第一行,位于<html></html>
标签之前;<!DOCTYPE>
声明不是html标签,是用于告诉web浏览器,解析页面采用哪个HTML版本进行编写的指令;<!DOCTYPE>
声明对大小写不敏感;- HTML4及更早版本基于SGML,
<!DOCTYPE>
声明引用 用于规定标记语言规则的DTD,使得浏览器能正确的显示内容;
HTML5不基于SGML,不需要引用添加<!DOCTYPE>
声明;
2.HTML文档类型声明有哪几种?
共8中=3种(html4.01)+3种(html1.0)+1种(html1.1)+1种(html5)
HTML4.01文档类型声明有三种:
①Strict(严格定义类型):该DTD仅允许使用HTML元素、属性;不允许使用展示性、弃用的元素(如:font
)、不允许使用框架集(Frameset
)1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">②Transitional(过渡定义类型):该DTD允许使用所有HTML元素、属性,允许是使用展示性、弃用的元素(如:
font
);但不允许使用框架集(Frameset
);1<!DOCTYOE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">③Frameset(框架定义类型):该DTD允许使用HTM的所有元素、属性,允许使用展示性、弃用的元素,允许使用框架集(
Frameset
)1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "HTTP://www.w3.org/TR/html4/frameset.dtd">HTML1.0文档类型声明有四种类型:与html4.01不同的是,HTML1.0全部要求以正确的XML格式编写XML,即所有标签元素都必须封闭。
①Strict(严格定义类型):允许使用所有的HTML元素和属性;不允许使用展示性、弃用的元素、框架集;1<!DOCTYPE HTML PUBLIC "-//W3C//DTD/ XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">②Transitioal(过渡定义类型):允许使用所有的HTML元素、属性,允许使用展示型、弃用的元素;但不允许使用框架集;
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD/ XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">③Frameset(框架定义类型):允许使用HTML元素、属性、展示性、弃用的元素、框架集;
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD/ XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Frameset.dtd">HTML1.1文档类型声明仅有一种,与HTML1.0类似,但允许添加模型:
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD/ XHTML1.1//EN" http://www.w3.org/TR/xhtml/DTD/xhtml11.dtd">HTML5不基于SGML,其文档类型声明只有一种
1<!DOCTYPE html>
要建立符合标准的网页文档,浏览器能够识别HTML/XHTML文档的类型,并正确的进行识别、解析,html必须采用DOCTYPE声明;如果文档不定义DOCTYPE类型,浏览器按照自己的方式来进行解析渲染的过程可能就会出现差错导致无法正常解析,也就是混乱模式或怪异者模式。
2. SGML、HTML、XML ——标记语言
- SGML:标准通用标记语言,即Standard Generalized Markup Language.
标准通用标记语言(SGML),是当今常用的超文本格式的最高层次标准,是一种跨平台、跨语言的一种可以定义标记语言的元语言,是IOS于1986年发布的一个信息管理方面的国际标准(
ISO 8879:1986 Information processing -- Text and office systems -- Standard Generalized Markup Language (SGML)
);但由于其强大的适应性,及其复杂性,难以普及。
HTML、XML都是SGML的一种派生。HTML是SGML的一个最成功的应用之一,而XML可以认为是SGML的一个子集;XML的产生便是为了简化SGML,以便于更加通用,比较成功的有语义Web、XHTML、RSS、XML-RPC、SOAP. - HTML:超文本标记语言,即Hyper Text Markup Language.
超文本标记语言(HTML),衍生于SGML,是一种用于创建网页的标准标记语言。编写HTML文档时,需声明对文档类型进行声明,即本文开篇的两个问题。html与CSS、Javascript语言一起用于创建令人赏心悦目的网页、网页应用程序以及移动应用程序的用户界面。缺点是标记相对少(只有固定的标记),缺少SGML的柔性和适应性,不能支持特定领域的标记语言。
- XML:可扩展标记语言,即eXtensible Markup Language.
可扩展标记语言(XML),是SGML的一种简化版本;表示一种结构化信息的标准文本格式;同HTML一样,编写XML文档前也需要进行文档类型声明,即XML序言,如
<?xml version="1.0"?>
,会告诉解析器或浏览器,这个文件应该按照XML规则进行解析.XML语言的缺点是:不支持分帧(framing),当多条XML消息在TCP上传输时,无法基于XML协议来确定一条XML消息是否结束。
3. XML DTD 与XML Schema ——文档类型 VS 文档格式
首先插入两个概念
①XML模式:指用来描述XML结构、约束因素的语言,如XML Schema、XML DTD、XDR、SOX等;
②XML格式:指XML文档本身所具有的格式;
- XML DTD: XML的文档类型定义的标准,采用与XML不同格式的语言,对XML文档的模式、格式进行规范描述的一种标准;缺点:XML DTD本身合法性缺少验证机制,需要与XML分开来进行合法性验证;
- XML Schema:XML的另一种文档类型定义标准,采用与XML相同格式的语言,对XML文档的模式、格式进行规范描述的一种标准;
参考文献