我一直在看到一些相互矛盾的信息,即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中运行了一个页面,它通过了两种方式。在这一点上,我猜它只是一种“风格”的东西。
答案 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)
如上所述的XML声明 并非所有XML文档都需要。 XHTML文档作者应该使用XML 所有文件中的声明。 XHTML文档作者必须使用XML 声明时的角色 文件的编码不是 默认的UTF-8或UTF-16,没有 编码由a指定 更高级别的协议。
答案 2 :(得分:4)
http://validator.w3.org/只接受&lt;?xml&gt;之前的东西&lt;!DOCTYPE&gt;。另一种方式(doctype before?xml)将无法验证。
答案 3 :(得分:2)
我从来没有把它包括在内(总是只用doctype),w3c说我的XHTML 1.0 Strict项目是“有效的”。