什么是DTD?

SGML引入了文档类型的概念,并由此引入了文档类型定义(Document Type Definition: DTD)。文档类型定义 (DTD) 实际上就是一套关于标记符的语法规则,它包含了对元素的定义,指出可以在文档中使用哪些标记符, 它们应该按什么次序出现, 哪些标记符可以出现于其它标记符中, 哪些标记符有属性, 等等。属于某种类型的文档,可以通过一个应用程序来解析,检查是否所有的元素都被定义以及元素出现的次序是否正确。属于同一种类别的文档可以按照一致的方式来处理。

什么是DOCTYPE?

document type文档类型的缩写,用来指定XHTML和HTML版本,告知浏览器用什么标准解析这个文档。

DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现

DOCTYPE语法?

语法格式

<!DOCTYPE 顶级元素 可用性 "注册//组织//类型 标签 版本 类型定义//语言" "url">

格式详解

  • ! 表示这不是一个html元素
  • 顶级元素:指定 DTD 中声明的顶级元素类型
  • 可用性:指定正式公开标识符(FPI)是可公开访问的对象还是系统资源。默认PUBLIC,可公开访问的对象。SYSTEM系统资源,如本地文件或URL。
  • 注册:指定组织是否由国际标准化组织(ISO)注册。 + (默认),组织名称已注册。 - 未注册。IETF和(W3C)是非注册的ISO组织。
  • 组织:指定表明负责由 !DOCTYPE 声明引用的DTD的创建和维护的团体或组织的名称,如W3C。
  • 类型:指定公开文本类,即所引用的对象类型。默认DTD。
  • 标签:指定公开文本描述,即对所引用的公开文本的唯一描述性名称。后面可附带版本号。默认HTML。
  • 定义:指定文档类型定义
    • Frameset 一种专门针对框架页面所使用的dtd,当页面中含有框架元素时,就要采用这种dtd。
    • Strict 一种要求不很严格的,允许在html中使用html 4.01的标识,排除所有W3C专家希望逐步淘汰的代表性属性和元素。
    • Transitional 包含除frameSet元素的全部内容。一种要求不很严格的,允许在html中使用html 4.01的标识。
  • 语言:指定公开文本语言,即用于创建所引用对象的自然语言编码系统。该语言定义已编写为 ISO 639语言代码(大写两个字母)。默认EN英语。
  • URL:指定所引用对象的位置

例子

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
//doctype首先根据-//W3C//DTD HTML 4.01 Transitional//EN查找相应引用对象,找不到则使用后面的url(这是永久存在的)

HTML5特殊性

HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。

标准模式vs怪异模式?

模式可以通过document.compatMode获得(CSS1Compat标准模式,BackCompat怪异、兼容模式)

怪异模式quirks mode

让IE的行为与(包含非标准特性的)IE5相同。这是一种比较宽松的向后兼容的模式。混杂模式通常模拟老式浏览器的行为,以防止老站点无法工作。PS:浏览器按照自己的方式解析代码

标准模式standards mode

标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行 PS:浏览器按照 W3C 标准解析代码

准标准模式almost standards mode

这种模式下的浏览器特性有很多都是符合标准的,不标准的地方主要体现在处理图片间隙的时候(在表格中使用图片时问题最明显)。

超级标准模式

IE8引入的一种新的文档模式,超级文档模式可以让IE以其所有版本中最符合标准的方式来解释网页内容。

如何触发以上模式详见https://hsivonen.fi/doctype/#handling

DOCTYPE详解的更多相关文章

  1. 免费的HTML5连载来了《HTML5网页开发实例详解》连载(三)DOCTYPE和字符集

    在2.1.2节中通过新老DOCTYPE的对比,读者可以清晰地看到HTML 5在精简旧有结构上做出的努力.DOCTYPE在出现之初主要用于XML中,用作描述XML允许使用的元素.属性和排列方式.起初HT ...

  2. [原创]mybatis详解说明

    mybatis详解 2017-01-05MyBatis之代理开发模式1 mybatis-Dao的代理开发模式 Dao:数据访问对象 原来:定义dao接口,在定义dao的实现类 dao的代理开发模式 只 ...

  3. org.apache.log4j.Logger详解

    org.apache.log4j.Logger 详解 1. 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工 ...

  4. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...

  5. 基于H5的微信支付开发详解

    这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...

  6. Web.xml详解(转)

    这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢迎大家一起讨论. ---题记 一.            Web.xml详解: (一)  web.xml加载过程(步骤) 首 ...

  7. ****基于H5的微信支付开发详解[转]

    这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...

  8. JQuery数组详解(含实例)

    <!doctype html>jQuery数组处理详解(含实例演示)@Mr.Think 演示所用数组 var _mozi=['墨家','墨子','墨翟','兼爱非攻','尚同尚贤']; 1 ...

  9. jQuery Validate验证框架详解

    转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...

随机推荐

  1. HDU - 1054 Strategic Game(二分图最小点覆盖/树形dp)

    d.一颗树,选最少的点覆盖所有边 s. 1.可以转成二分图的最小点覆盖来做.不过转换后要把匹配数除以2,这个待细看. 2.也可以用树形dp c.匈牙利算法(邻接表,用vector实现): /* 用ST ...

  2. lucene Index Store TermVector 说明

    最新的lucene 3.0的field是这样的: Field options for indexingIndex.ANALYZED – use the analyzer to break the Fi ...

  3. 基于阿里云上实现全站https的正确姿势(一)

    对应的网址:https://yq.aliyun.com/articles/65199 摘要: 目前主流大厂的网站和服务都已经实现了全站https, 例如: baidu, taobao, jd等. 关于 ...

  4. Spring Data JPA 和MyBatis比较

    现在Dao持久层的解决方案中,大部分是采用Spring Data JPA或MyBatis解决方案,并且传统企业多用前者,互联网企业多用后者. Spring Data JPA 是Spring Data ...

  5. Mysql基础调优

    mysql基础的优化方式 1.利用索引加快查询速度 2.利用查询缓存或者旁挂式缓存,提高访问速度 缓存:k/v key:查询语句的hash值 value:查询语句的执行结果 哪些查询可能不会被缓存? ...

  6. 任务35:JWT 认证授权介绍

    任务35:JWT 认证授权介绍 应用场景主要是移动端或者PC端前后分离的场景 直接对客户端API的请求 例如访问admin/Index 没有权限返回403. 需要客户端手动的再发动请求,这是一个拿to ...

  7. NYOJ3——多边形重心问题

    多边形重心问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:5  描述:在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接) ...

  8. Oracle Function INSTR

    INSTR(string,subString,position,ocurrence)查找字符串位置 解释:      string:字符串      subString:要查找的子字符串      p ...

  9. 从mysql高可用架构看高可用架构设计

    高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...

  10. Cloudera Manager架构原理

    cloudera manager的核心是管理服务器,该服务器承载管理控制台的Web服务器和应用程序逻辑,并负责安装软件,配置,启动和停止服务,以及管理上的服务运行群集. Cloudera Manage ...