为什么在声明 DOCTYPE 时要指定 URL?浏览器接下来如何处理这些信息?如果您打开一个 URL,例如http://www.w3.org/TR/html4/strict.dtd,那么我们会得到一些 xml 文件(或 dtd 文件,懒得看它是什么)。在此文件中,所有文本都是注释。
那些。浏览器不太可能使用此 URL 来获取有关规范的一些实时信息。在打开页面之前,所有浏览器都不太可能访问此 URL 以获取帮助信息。是的,在没有互联网的情况下,它们完全显示页面。
或者浏览器有关于.dtd文件内容的本地信息,而这个文件实际上存储了正确显示页面所必需的信息。并且浏览器在某个时间段内简单地更新本地缓存中的.dtd(但无论如何,为什么要在DOCTYPE中写入这个URL)。
既然我在问这个问题,当我指定 xmlns="http://www.w3.org/1999/xhtml" 时,浏览器会如何处理这些信息?他是否关注链接?
我会自己回答。和评论里写的差不多。
有 SGML 语言,HTML、XML、XHTML、SVG 和其他语言都来自该语言。SGML 是一种元语言(即模板语言),它的实现需要一个 dtd 文件,该文件准确地描述了标签可以是什么以及它们包含什么。
在 xml(SGML 的后代)中,之前也使用过 dtd,但现在建议使用 xml 模式。但是,pre-5 HTML 和 xhtml 使用 dtd 文件来描述特定的标记语言。
HTML 5 不是基于 SGML,原则上没有 dtd 描述文件(看起来 HTML 5 不是基于 SGML 但兼容它。也就是说,它形式上是不同的语言,但与之前的 HTML 非常相似)。所以 HTML 5 没有 dtd。
对于“浏览器如何处理此链接”这个问题,您可以阅读英文维基https://en.wikipedia.org/wiki/Document_type_declaration。它说浏览器使用 HTML 解析器,而不是通用的 dtd 解析器。
那些。实际上,浏览器的 DOCTYPE 的内容是一个很长的常量,它不将其视为单独的元素。DOCTYPE中出现这样的“花里胡哨”,是因为HTML本质上是SGML的一种应用,它要求DOCTYPE中有各种各样的东西。解密 DOCTYPE 内容,例如
<!DOCTYPE [Элемент верхнего уровня] [Публичность] "[Регистрация]//[Организация]//[Тип] [Имя]//[Язык]" "[URL]">对浏览器没有意义,也不会被它们解析。
解密数据可能很有用,例如,对于作为某个系统或其他 SGML 语言的一部分工作的 xml 文件,它确实确定了当前给定文档的 dtd 文件的来源。