【问题标题】:Do I need to declare XML on a page using the XHTML doctype?我是否需要使用 XHTML 文档类型在页面上声明 XML?
【发布时间】:2010-11-23 00:53:06
【问题描述】:

我看到了一些相互矛盾的信息,即 XHTML 文档也必须将自己声明为 XML。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

但是,在其他地方(包括 w3.org),DOCTYPE 必须 是第一个 tag 声明。

既然 W3 这么说,那一定是真的。但是,我可能有一些页面/应用程序在使用第一种方法。我有什么风险?

编辑:我刚刚通过W3 Validator 运行了一个页面,有和没有XML 声明,它通过了两种方式。那么,在这一点上,我猜这只是一个“风格”的事情。

【问题讨论】:

    标签: html xml xhtml doctype


    【解决方案1】:

    http://validator.w3.org/ 只接受 之前的 内容。反之(在 ?xml 之前的 doctype)不会得到验证。

    【讨论】:

      【解决方案2】:

      来自XHTML 1.1 specification

      类似上述的 XML 声明 并非所有 XML 文档都需要。 XHTML 文档作者应该使用 XML 所有文件中的声明。 XHTML 文档作者必须使用 XML 声明当字符 文档的编码不是 默认 UTF-8 或 UTF-16 并且没有 编码由一个指定 更高级别的协议。

      http://www.w3.org/TR/xhtml11/conformance.html

      【讨论】:

        【解决方案3】:
        <?xml version="1.0" encoding="utf-8"?>
        

        ...是 XML 的默认版本和编码,因此您根本不需要它。如果您将 XHTML 作为 text/html 提供,那么它可能根本不应该存在。

        但是,在其他地方(包括 w3.org)我看到 DOCTYPE 必须是第一个标签。

        听起来有些混乱... DOCTYPE 不是标签, 也不是(称为 XML 声明,看起来像处理指令,但也不是其中之一) .

        如果您同时包含两者,则 XML 声明必须放在首位。诀窍是 IE6 的 DOCTYPE 嗅探器只检测标准模式的 DOCTYPE,如果它们是页面上的第一件事,这意味着你不能使用 XML 声明,你必须坚持使用 XML 1.0 和 UTF-8 编码(这不是很好损失)。

        【讨论】:

        • 请原谅“标签”一词的误用。我引用了我正在阅读的一些文档。
        【解决方案4】:

        我从来没有包含它(总是只使用 doctype),w3c 说我的 XHTML 1.0 Strict 项目是“有效的”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-04
          • 1970-01-01
          • 1970-01-01
          • 2014-03-05
          • 2019-08-22
          • 1970-01-01
          相关资源
          最近更新 更多