许多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声明会产生很多 猜测不必要,并因此 触发“标准”渲染模式。
答案 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服务器,很容易证明它并不重要。只需将电缆拉到外面的世界,看看你是否仍然可以打开服务器上的页面。