• DTD的作用


    在介绍DTD的作用之前先介绍一下SGML:
    SGML SGML(Standard Generalized Markup Language,标准通用标记语言),是一种定义电子文档结构和描述其内容的国际标准语言,是所有电子文档标记语言的起源,
    早在Web发明之前SGML就已存在. SGML是1986年出版发布的一个信息管理方面的国际标准(ISO 8879)。该标准定义独立于平台和应用的文本文档的格式、索引和链接信息,
    为用户提供一种类似于语法的机制,用来定义文档的结构和指示文档结构的标签。

    DTD的作用——文档规范与呈现模式

    1. DTD在页面中的作用

     

    ①DTD(Document Type Definition文档类型定义)是一组机器可读的规则,它们定义XMLHTML的特定版本中允许有什么,不允许有什么。在解析网页时,浏览器将使用这些规则检查页面的有效性并且采取相应的措施。(由DTD中定义的文档类型影响)

    ②DTD是对HTML文档声明,还会影响浏览器的渲染模式(工作模式)。(由页面中书写DTD的方式影响)

     举个例子:

    <P align="center">这是一个居中段落</P>
    在XHTML中,标记是区分大小写的,上面的代码毫无意义。可在HTML中它是一个居中段落。浏览器是怎样处理这种情况呢?难道浏览器认为你写的是HTML,然后把它作为             一个居中段落显示?如是你写的是XHTML呢,它将是一段不可显示的代码!浏览器是怎样知道你用的是什么标记语言然后正确对待这段代码呢?
    这就是DTD的工作了。一个DTD应该放在每一个文档的第一行。这样正确地放置,你的DTD才能告诉浏览器的用的是什么标记语言。在通常情况下,如果你编写的是正确       代码,并拥有一个合适的DTD,浏览器将会根据W3C的标准显示你的代码。
    如果说你没有使用DTD,你将很难预测浏览器是怎样显示你的代码,仅仅在同一浏览器就有不同的显示效果。尽管你的网页做得非常飘亮,要是没有使用DTD,你的努力也是白费的。因此,一个DTD是必不可少的。

     

    2. DTD规定XML或HTML中的标签和语法

     

    1)HTML 4.01规定了三种文档类型:Strict、Transitional 以及 Frameset

    ①STRICT(严格类型):

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

    ②TRANSITIONAL(过渡类型):

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

    ③FRAMESET(框架类型):

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

     

    2)XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。

    ①STRICT(严格类型):

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

    ②TRANSITIONAL(过渡类型):

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

    ③FRAMESET(框架类型):

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

     

    3)HTML5只规定了一种文档类型:

    <!DOCTYPE HTML>

     

     

    3. DTD会影响浏览器的渲染模式:

     

    1)浏览器的渲染模式:

    标准模式(又叫严格模式,Standards mode 或者 Strict mode)。

    混杂模式(又叫怪异模式,Quirks mode):对页面的处理方式永久冻结在IE5.5,主要体现盒模型的差异。

    近似标准模式(又叫准标准模式,Almost Stands Mode):从字面意思上看与标准模式非常类似,但确实有小的差别。主要体现在对于表格单元格内垂直方向布局渲染差异。

     

    2)DTD的不同导致渲染模式的不同

    ①XHTML文档包含形式完整的DOCTYPE,一般以标准模式呈现。

    ②HTML4.01文档,包含严格DTD的文档,一般也以标准模式呈现。

    含过渡DTDURIDOCTYPE,一般以标准模式呈现。

    含过渡DTD但没有URIDOCTYPE,会以混杂模式呈现。

    ⑤DOCTYPE不存在或不正确会导致HTMLXHTML文档以混杂模式呈现。

    ★具体呈现模式参见:http://hsivonen.iki.fi/doctype/

     

     

    4. JavaScript中关于呈现模式的返回结果:

     

       HTML5 草案中,更加明确的规定了模式的定义:

    传统名称

    HTML5 草案名称

    document.compatMode 返回值

    standards mode 或者 strict mode

    no-quirks mode

    CSS1Compat

    almost standards mode

    limited-quirks mode

    CSS1Compat

    quirks mode

    quirks mode

    BackCompat

    注:HTML5 草案关于 compatMode 的介绍:3.1.3 Resource metadata management

     

     

    5. HTML5中,无需定义DTD的URL原因

     

    1)HTML4.01和XHTML

    ①DTD 规定了使用通用标记语言(SGML)的网页的语法。

    ②诸如 HTML 这样的通用标记语言应该使用 DTD 来规定应用于某种特定文档中的标签的规则,这些规则包括一系列的元素和实体的声明。

    ③在通用标记语言(SGML)的文档类型声明或 DTD 中,XHTML 被详细地进行了描述。

    ④XHTML DTD 使用精确的可被计算机读取的语言来描述合法的 XHTML 标记的语法和句法。

     

    2)HTML4.01中的doctype需要对DTD进行引用,因为HTML4.01基于SGML。而HTML 5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行)。

  • 相关阅读:
    常见的概念
    cas底层
    判断页面是否读取了缓存
    window.location.hash(hash应用)---跳转到hash值制定的具体页面
    * 输入框被第三方输入法遮挡问题
    Mui去掉滚动条:
    实用网址
    完美解决safari、微信浏览器下拉回弹效果。
    移动端兼容性问题解决方案
    监听ios自带返回功能
  • 原文地址:https://www.cnblogs.com/xiongmanli/p/6101899.html
Copyright © 2020-2023  润新知