Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
html中的不同doctype是什么?它们是什么意思?_Html_Xhtml_Doctype - Fatal编程技术网

html中的不同doctype是什么?它们是什么意思?

html中的不同doctype是什么?它们是什么意思?,html,xhtml,doctype,Html,Xhtml,Doctype,正如标题所描述的,可用的不同doctype是什么,它们是什么意思?我注意到在IE7中,当我从 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 到 还有其他的吗?影响或后果是什么 谢谢 以下是W3C对各种DTD的官方解释: 您可能还会发现以下好处: 传统上,文档类型声明将文档与文档类型定义关联起来 文档类型定义是特定XML或SGML文档的标准。XML和SGML本身除了标记和属性一般如何工作外,没

正如标题所描述的,可用的不同doctype是什么,它们是什么意思?我注意到在IE7中,当我从

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >


还有其他的吗?影响或后果是什么


谢谢

以下是W3C对各种DTD的官方解释:

您可能还会发现以下好处:


传统上,文档类型声明将文档与文档类型定义关联起来

文档类型定义是特定XML或SGML文档的标准。XML和SGML本身除了标记和属性一般如何工作外,没有太多的模式或非常特定的规则集。您可以将DTD视为特定类型文档(如HTML、SVG或MathML)的规则描述。它们说明了允许在何处使用哪些标记(例如,
html
元素必须正好包含一个
head
元素,后跟一个
body
元素)

有一些DTD的替代品,如XML模式,现在更常用

然而,浏览器根本不使用DTD。他们读取Doctype以确定呈现模式,但解析文档的规则完全烘焙到浏览器中

这就是HTML5有Doctype(用于确定呈现模式)但没有DTD的原因

渲染模式

早期的网络浏览器有很多缺陷。当新版本发布时,他们必须保持与前任和竞争对手的兼容性。这使得修复bug变得非常困难,因为网站的构建依赖于bug

为了解决这个问题,现代浏览器有不同的呈现模式(标准模式,用于根据标准呈现文档和css,怪癖模式,其中浏览器模拟早期浏览器的错误,而几乎是介于两者之间的标准模式

选择Doctype

当选择DOCTYPE时,有两个因素需要考虑:

  • 它会触发标准模式吗?(对于新页面来说,现在很少有需要与不支持标准模式的浏览器兼容的时候)
  • 它支持我需要的功能吗
通常这意味着您应该使用HTML5。它是当前的标准,最能反映浏览器的实际工作方式:

<!DOCTYPE html>

没有做到这一点。严格的doctype避免了大多数应该用CSS处理的特性

XHTML 1.0中编写时,此Doctype很常见:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

更多过时功能可通过以下途径获得:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

HTML 4.01中编写时,此选项比较常见:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

使用过时的功能

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">


请注意,上面的大多数内容都有不同之处(例如,您可以省略URL并依赖公共标识符),这对支持标准模式有影响

关于严格与过渡性博士类型的辩论

(请注意,以下情况非常严重,在2021年肯定比2008年更不正确)

标准传播者呼吁web开发人员停止在新页面上使用过渡Doctype,而是使用严格的Doctype。同样,在这种情况下,理论和实践在协调上存在一些困难。过渡Doctype最初的希望是为传统网站向标准遵从性过渡提供一个中途站。对于过渡doctype,元素和属性的限制实际上“不那么严格”,因此开发人员可以更快地在标准模式下运行他们的工作,并随着时间的推移逐步消除突出的差异

之所以存在争议,是因为开发人员在企业环境中更改Doctype并不总是那么简单。中小型网站的自由开发者和制作者通常可以更轻松地确定他们的文档类型并进行转换。在对基于web的服务要求很高的企业生产环境中,对遗留系统和第三方代码产品的依赖性本质上更为复杂,这些产品本身可能在删除或重新设计的路线图上,但这些更改的执行必须有系统地、增量地完成

有用的工具

W3C()是一个在定义此类标准方面发挥积极作用的组织。他们在网站上维护了一个有用的在线工具,用于根据自己的标准验证文档。还有许多其他第三方工具和类似的功能。

浏览器您使用什么doctype(好吧,几乎是真的),他们使用它的目的只有一件事:决定使用哪种渲染模式。例如,请参阅或,以获取用于决定使用哪种模式的算法的真实示例(我想MSDN中也有一些IE文档…[这可能是正确的页面](,我不知道,抱歉)

但是,大多数浏览器中有两种主要模式(有些浏览器也有):

  • 怪癖模式(当找不到“正确”的doctype时使用,从浏览器的角度来看是“正确的”):尝试像一些旧版本的IE那样呈现文档(最重要的区别之一,即影响呈现的最大因素,是一些浏览器在此模式下利用
  • 和标准模式(当浏览器发现它认为正确的doctype时使用):尝试按照标准执行
您可以在前面提到的浏览器中使用(非标准)属性来检查用于呈现当前文档的模式
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<!doctype html>