我已经看到了一些相互矛盾的信息,一个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说,它必须是真实的。 不过,我可能有一些页/应用程序撒谎说是继第一种方法。 我有哪些风险?
编辑 :我只是通过跑了页面W3验证使用和不使用XML声明,并通过两种方式。 在这一点上,然后,我猜它只是一个“风格”的东西。
<?xml version="1.0" encoding="utf-8"?>
...是XML的默认版本和编码,所以你并不需要它。 如果你所服务的XHTML为text / html,它可能不应该在所有的在那里。
然而,在其他地方我看到(包括w3.org)的DOCTYPE必须是第一个标签。
听起来似乎有些混乱...... DOCTYPE是不是标签也不是<?XML?>(这就是所谓的XML声明,看起来像一个处理指令,但它不是其中的一个,要么)。
如果您既包括,XML声明必须是第一位的。 诀窍是,IE6的DOCTYPE嗅探器只能检测标准模式文档类型,如果他们在页面上的第一件事情,这意味着你不能使用XML声明,你必须用XML 1.0和UTF-8编码棒(这是没有很大失利)。
从XHTML 1.1规范 :
像这样的XML声明的上面是不是在所有的XML文档必须的。 XHTML文档作者应该使用他们的所有文档的XML声明。 当文档的字符编码是比默认的UTF-8或UTF-16等,并通过高层协议不指定编码XHTML文档作者必须使用XML声明。
http://www.w3.org/TR/xhtml11/conformance.html
http://validator.w3.org/只接受<?xml的>东西之前<!DOCTYPE>。 周围的其他方法(DOCTYPE前?XML)将不会得到验证。
我从来没有包括它(总是只用了文档类型),和W3C说我的XHTML 1.0严格的项目是“有效的”。