我是否需要使用XHTML doctype在页面上声明XML?

时间:2009-08-26 14:31:42

标签: html xml xhtml doctype

我一直在看到一些相互矛盾的信息,即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 必须是第一个标记声明。

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

编辑:我只是在带有和不带XML声明的W3 Validator中运行了一个页面,它通过了两种方式。在这一点上,我猜它只是一种“风格”的东西。

4 个答案:

答案 0 :(得分:9)

<?xml version="1.0" encoding="utf-8"?>

...是XML的默认版本和编码,因此您根本不需要它。如果你以文本/ html的形式提供XHTML,它可能根本不应该存在。

  

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

听起来有些混乱...... DOCTYPE不是标签,也不是&lt;?xml?&gt; (它被称为XML声明,看起来像处理指令,但它也不是其中之一)。

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

答案 1 :(得分:4)

来自XHTML 1.1 specification

  

如上所述的XML声明   并非所有XML文档都需要。   XHTML文档作者应该使用XML   所有文件中的声明。   XHTML文档作者必须使用XML   声明时的角色   文件的编码不是   默认的UTF-8或UTF-16,没有   编码由a指定   更高级别的协议。

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

答案 2 :(得分:4)

http://validator.w3.org/只接受&lt;?xml&gt;之前的东西&lt;!DOCTYPE&gt;。另一种方式(doctype before?xml)将无法验证。

答案 3 :(得分:2)

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