在你每一个页面的顶端,你需要文件声明。是的,必须。
如果不指定文件类型,你的HTML不是合法的HTML,并且大部分浏览器会用“怪癖模式(quirks
mode)”来处理页面,这意味着浏览器认为你自己也不知道究竟做什么,并且按浏览器自己的方式来处理你的代码。你能是个HTML大师,在地球上打遍天下无敌手,或你的HTML能无瑕疵,CSS能非常完美,但如果没有文件声明,或错误的文件声明,你的网页和一个短视的,独眼的长臂猿婴儿十分艰难地堆砌起来的没两样。
XHTML 1.0 Strict(严格)的文件声明是这样的:
下面的是XHTML 1.1的文件声明,作为XHTML的最新版本,看起来更完美,但还是有一些问题,随后我们会稍微讲解……
如果你不愿放弃HTML 4或你更有Netscape 4死忠用户,你能使用XHTML 1.0
Transitional(过渡型):
你使用这的唯一理由是你还要兼容老版本的,少用的浏览器。过渡型XHTML 1.0允许HTML
4的表现元素,其也可能在如Netscape 4的浏览器中表现更好。但使用这些元素将对你网页的效率和可用性有害。
最后,如果你是使用框架的怪人之一,能使用像下面相同的XHTML 1.0 Frameset(框架)文件类型声明:
注意DOCTYPE标签必须大写和前置一个英文半角感叹号!。他是唯一一个打破规则的标签,他不必关闭。
语言声明
即使HTTP头或在html起始标签内设置了xml:lang属性,你也必须为文件指定一个主要语言。尽管处理一个合法的XHTML文件这不是必须的,但也是个易用性的考虑。值是缩写的,比如en(English,英语),fr(French,法语),de(German,德语)或mg(Malagasy,这是什么语?译者也不知道,呵呵。??译者注)。
声明一个主要用英语内容的文件,例子是这样的:
在声明主要语言之后,如果还需要使用其他语言,你还能在内联中使用xml:lang属性(比如HTML
Hund)。
内容类型
HTML文件的媒体类型和字体集也许要指定,能使用HTTP头来完成,比如:
Content-Type: text/html; charset=UTF-8
HTTP头部的第一部分(如text/html)是文件MIME类型,让浏览器知道文件的媒体类型因此能知道怎么处理。所有的文件都有MIME类型。JPEG图像是image/jpeg,CSS文件是text/csss和HTML一般使用text/html。
HTTP头部的第二部分(如UTF-8部分)是字符集。
也许设置HTTP头的最简易方法是在HTML中使用“HTTP同义(HTTP-equivalent)”的头标签,像这样:
稍微复杂但更好的方法是使用服务器端脚本语言来发送头。用PHP的话,你能这样做: