每个带有doctype的html页面都需要互联网连接才能正确呈现页面吗?

时间:2009-12-31 19:33:41

标签: html xhtml w3c doctype

许多doctype使用网址链接

像这样

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

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

此dtd文件位于实时网址http://www.w3.org/TR/html4/strict.dtd

这个在线直播dtd的用途是什么,以及如何根据此doctype正确呈现任何页面(使用此doctype)而无法访问此网址(我的意思是如果无法访问互联网?)

更新:我在维基百科http://en.wikipedia.org/wiki/System_identifier

中找到了此信息
  

在HTML和XML中,系统标识符   是一个无碎片的URI引用。它   通常出现在文档类型中   宣言。在这种情况下,它是   旨在识别文档类型   它只用于一个   申请,而公众   标识符用于标识a   文档类型可能超过   一个申请。

     

在以下示例中,系统   identifier是包含的文本   在引号内:

     

更新2:是否仅用于验证器? Dreamweaver等软件如何提供离线验证?

更新3:我在w3c网站http://www.w3.org/QA/Tips/Doctype

找到了此信息
  

为什么要指定doctype?因为它   定义您的(X)HTML的哪个版本   文件实际上是使用(版本   什么浏览器或验证器?),和   这是一个关键的部分   某些工具所需的信息   (哪些工具?任何其他工具,然后验证器?)处理文档。

     

例如,指定doctype   您的文档允许您使用工具   例如要检查的标记验证器   你的(X)HTML的语法。这样的工具   如果他们不这样做将无法工作   知道你是什么样的文件   使用

     

但最重要的是   与大多数浏览器家庭,a   doctype声明会产生很多   猜测不必要,并因此   触发“标准”渲染模式。

3 个答案:

答案 0 :(得分:14)

不,没有浏览器实际提取或验证doctype。请参阅DTDs Don't Work on the Web,了解为什么提取和验证DTD是个坏主意。

理论上,doctype用于说明文档使用的标准版本。除了switch between quirks and standards mode之外,浏览器通常不使用此信息。为此目的,所有现代浏览器都接受最简单的doctype,没有URL或版本信息<!DOCTYPE html>;因此,HTML5已将此作为推荐的文档类型。

验证器有时会使用此信息来告知要验证的DTD,但文档中嵌入的DTD实际上并不是指定验证信息的好方法。验证文档中引用的DTD的问题在于该文档的使用者并不真正关心文档是否是自洽的,而是它是否遵循消费者知道如何可靠地解释的模式。相反,使用更强大的模式语言(如RELAX NG)来验证外部模式通常会更好。

当验证者使用此信息时,他们经常仅将URI用作标识符,而不是定位器。这意味着验证器已经知道所有常见的HTML文档类型,并使用该知识进行验证,而不是从所引用的URI下载。这部分是为了避免每次都必须下载DTD的问题,并且还因为DTD实际上没有指定足够的信息来提供非常好的验证和错误消息,因此可以在自定义代码中指定验证器的某些部分。或者更强大的模式语言。有关详情,请参阅Henri Sivonen's thesis有关validator.nu HTML5一致性检查器的实施情况。

某些验证器也可能会下载然后缓存DTD,因此需要在线下载一次才能下载,但稍后将从缓存版本开始工作。

答案 1 :(得分:2)

URI用于唯一标识文档类型 - 它不用于检索,浏览器(或其他软件)也不应依赖于该网址上存在的文档。

答案 2 :(得分:0)

我曾经对此感到疑惑。但是如果你有自己的HTTP服务器,很容易证明它并不重要。只需将电缆拉到外面的世界,看看你是否仍然可以打开服务器上的页面。