2009-08-26 72 views
6

我一直在看到一些冲突的信息,即XHTML文档也必须声明自己是XML。我是否需要使用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 Validator运行了一页,但没有XML声明,并且它通过了两种方式。那么,我猜这只是一种“风格”的东西。

回答

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

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

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

听起来有些混乱...... DOCTYPE是不是标签也不是<?XML?>(这就是所谓的XML声明,看起来像一个处理指令,但它不是其中的一个,或者)。

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

+0

赦免单词“标签”的误用。我引用了一些我正在阅读的文档。 – ale 2009-08-26 14:55:55

2

我从来没有包括它(总是只有文档类型),而w3c说我的XHTML 1.0 Strict项目是“有效的”。

4

XHTML 1.1 specification

XML声明像所有的XML文档上面 的一个不是必需的。 XHTML文档作者应该在其所有文档中使用XML 声明。当文档的字符 编码比 其他 XHTML文档作者必须使用一个XML 声明默认UTF-8或UTF-16和由 高层协议不指定 编码。

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

4

http://validator.w3.org/只接受<?XML >东西<之前!DOCTYPE >。反过来(xml之前的doctype)将不会被验证。

相关问题