HTML中DTD的用途是什么?

Sam*_*Sam 2 html doctype

任何人都可以指定HTML页面中文档类型声明的需要和使用.它的优点是什么?我在网上搜索,发现结果有点令人困惑.请有人强调.

eye*_*ess 7

为了澄清,根据Gumbo的问题,文档类型定义描述了文档类型的语法.这实际上适用于文档中的文档类型声明.以下描述后者.

它做了两件事:

  1. 它确保正确描述您的数据,因此文档解析器可以知道您在文档结构中使用的标记和实体的语义.

  2. 在现代浏览器中,它会触发渲染模式.大多数现代doctypes触发"标准模式"(这意味着遵循当前或提议的Web标准)或"几乎标准模式"(与"标准模式"相同,除了元素的默认display样式而不是),而旧的doctypes或no doctype将触发"怪癖模式"(根据较旧的盒子模型呈现,其中维度的计算方式不同;在此框模型中,元素的元素,例如,是显示元素及其内容区域的总宽度减少了).<img>blockinlinewidthpadding

笔记:

  1. 我不认为任何版本的IE支持"几乎标准模式",但它很容易用CSS中的这一行重现: img { display: block; }

  2. 如果在doctype之前有空格,则即使存在"标准模式"doctype也可以触发"怪癖模式",如果在它之前有XML序言(例如<?xml version="1.0" encoding="UTF-8"?>),则可以在IE6中触发.

  • @eyelidless:文档类型定义指定了一些语法。文档类型声明指的是要用于当前文档的文档类型定义。而 `&lt;!DOCTYPE … &gt;` 只是一个文档类型声明。(参见http://www.w3.org/TR/html4/struct/global.html#version-info) (2认同)
  • @eyelidless:区分这两个术语很重要,因为它们描述了两种不同的事物。一个描述了一种称为 HTML 的语言的语法,另一个描述了解释特定文档时要使用的语法。这就像混淆了*英语*(由某些语法定义的语言)和*我使用英语*(将我的句子解释为英语的语句)。 (2认同)