DTD简介

DTD是什么?

DTD= Document Type Definition,文档类型声明

DTD作用?

  • 定义以哪种标准解析document
  • 确保document在不同的浏览器中以相同的方式被解析

DTD必须要精确,注意拼写以及大小写

 

注释:<!DOCTYPE> 声明没有结束标签。

 

提示:<!DOCTYPE> 声明对大小写不敏感

 

compatMode:

含义:

标识是否切换到 standards-compliant 模式

属性值:

BackCompat:standards-compliant关闭
CSS1Compat:standards-compliant开启

说明:

当standards-compliant模式开始后,俗称也就是strict mode,IE将会根据W3C的css标准解析document。当standards-compliant模式关闭后,俗称也是quirks mode,document将会以之前的IE被解析。

在IE8中,compatMode属性已经被启用,使用documentMode属性代替。

在IE6及之后的版本中,通过在文档顶部增加!DOCTYPE可以切换到standards-compliant模式

在指定!DOCTYPE时,需要定义DTD以及DTD的url,否则将不会切换到 standards-compliant模式

获取:
document.compatMode

定义文档兼容性:

第一阶段:引入<!DOCTYPE>

Internet Explorer 的每个主要版本中都会添加一些功能,旨在使浏览器更易于使用、提高安全性以及更紧密地支持行业标准。 随着 Internet Explorer 的功能不断增加,将会出现较早的网站可能无法正常显示的风险。

为了最大程度地降低这种风险,Internet Explorer 6 允许 Web 开发人员选择 Internet Explorer 用来解释和显示其网页的方式。 默认为“Quirks 模式”;在这种模式下,将按照使用较旧的浏览器版本查看网页的方式来显示网页。 “标准模式”(也称为“严格模式”)的特点是可提供对行业标准的最大支持;但是,若要利用此增强的支持,网页中需要包括适当的 <!DOCTYPE> 指令。

如果某个站点未包括 <!DOCTYPE> 指令,则 Internet Explorer 6 将使用 Quirks 模式显示该站点。 如果某个站点包含有浏览器未能识别的有效 <!DOCTYPE> 指令,则 Internet Explorer 6 将使用 Internet Explorer 6 标准模式显示该站点。 由于已经包含 <!DOCTYPE> 指令的站点很少,因此兼容性模式切换极为成功。 这样使 Web 开发人员能够选择最佳时间将其站点迁移到标准模式。

第二个阶段:增加X-UA-Compatible,降级显示网页

随着时间的推移,许多站点都开始依赖标准模式。 这些站点同时还开始使用 Internet Explorer 6 的功能和行为来检测 Internet Explorer。 例如,Internet Explorer 6 并不支持 通用选择器(可能为英文网页);而某些网站将此用作为 Internet Explorer 提供特定内容的方式。

Internet Explorer 7 提供了通用选择器支持等新功能,旨在更全面地支持行业标准。 由于 <!DOCTYPE> 指令仅支持 Quirks 模式和标准模式这两种设置,因此 Internet Explorer 7 标准模式替换了 Internet Explorer 6 标准模式。

结果,依赖于 Internet Explorer 6 标准模式的行为的站点(如缺乏对通用选择器的支持)将无法检测到新版本的浏览器。 因此,Internet Explorer 特定的内容不会提供给 Internet Explorer 7,并且这些站点不会按预期显示。 由于 Internet Explorer 7 仅支持两种兼容性模式,因此将会迫使受影响站点的所有者更新其站点以支持 Internet Explorer 7。

与任何早期浏览器版本相比,Internet Explorer 8 对行业标准提供了更加紧密的支持。 因此,针对旧版本的浏览器设计的站点可能不会按预期显示。 为了帮助减轻任何问题,Internet Explorer 8 引入了文档兼容性的概念,从而允许您指定站点所支持的 Internet Explorer 版本。 文档兼容性在 Internet Explorer 8 中添加了新的模式;这些模式将告诉浏览器如何解释和呈现网站。 如果您的站点在 Internet Explorer 8 中无法正确显示,则可以更新该站点以支持最新的 Web 标准(首选方式),也可以强制 Internet Explorer 8 按照在旧版本的浏览器中查看站点的方式来显示内容。 通过使用 meta 元素将 X-UA-Compatible 标头添加到网页中,可以实现这一点。

指定文档兼容模式:

<html>
<head>
  <!-- Mimic Internet Explorer 7 -->
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >
  <title>My Web Page</title>
</head>
<body>
  <p>Content goes here.</p>
</body>
</html> 

Edge 模式:

将告诉 Internet Explorer 以可用的最高级别模式显示内容。 对于 Internet Explorer 8,这等同于 IE8 模式。 假设 Internet Explorer 的将来版本支持更高级别的兼容性模式,那么,设置为 Edge 模式的页面将以该版本支持的最高级别的模式显示。 当使用 Internet Explorer 8 查看时,这些相同的页面仍会以 IE8 模式显示。

HTML模板:

<!DOCTYPE html>
<html>

<head>
    <title>An HTML standard template</title>
    <meta charset="utf-8"  />
</head>

<body>

     <p>… Your HTML content here …</p>

</body>
</html>

 

DTD列表:

(X)HTML Doctype Declarations List:

  • HTML5 and beyond
    HTML5 不基于 SGML,所以不需要引用 DTD
    <!DOCTYPE HTML>
  • HTML 4.01
    Strict
    该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
       "http://www.w3.org/TR/html4/strict.dtd">
    Transitional
    该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
    Frameset
    该 DTD 等同于 HTML 4.01 Transitional,但允许框架集内容
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
       "http://www.w3.org/TR/html4/frameset.dtd">
  • XHTML 1.0
    Strict (quick reference)
    该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    Transitional
    该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    Frameset
    该 DTD 等同于 XHTML 1.0 Transitional,但允许框架集内容
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  • XHTML 1.1 - DTD:
    该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型(例如提供对东亚语系的 ruby 支持)
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  • XHTML Basic 1.1 (quick reference):
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN"
        "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">

MathML Doctype Declarations:

  • MathML 2.0 - DTD:
    <!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"    
        "http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
  • MathML 1.01 - DTD:
    <!DOCTYPE math SYSTEM 
        "http://www.w3.org/Math/DTD/mathml1/mathml.dtd">

Compound documents doctype declarations:

  • XHTML + MathML + SVG - DTD:
    <!DOCTYPE html PUBLIC
        "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
        "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
  • XHTML + MathML + SVG Profile (XHTML as the host language) - DTD:
    <!DOCTYPE html PUBLIC
        "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
        "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
  • XHTML + MathML + SVG Profile (Using SVG as the host) - DTD:
    <!DOCTYPE svg:svg PUBLIC
        "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
        "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
Optional doctype declarations:
  • SVG 1.1 Full - DTD:
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
  • SVG 1.0 - DTD:

    <!
    DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
  • SVG 1.1 Basic - DTD:
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN"
        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">
  • SVG 1.1 Tiny - DTD:
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN"
        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">

Historical doctype declarations:

  • HTML 2.0 - DTD:
    <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
  • HTML 3.2 - DTD:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
  • XHTML Basic 1.0 - DTD:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
        "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> 

HTML5/HTML 4.01/XHTML 元素和有效的 DTD

参考资料:

 

posted on 2017-03-24 11:10  stonevina  阅读(401)  评论(0编辑  收藏  举报

导航