你真的在使用XHTML吗?(MIME类型/XHTML1.0与XHTML1.1区别)
2014-09-03 13:09
302 查看
MIME类型
当web浏览器向web服务器请求一个页面时,web服务器会在发送实际页面内容前,先发送一些头信息即header。那这些header有什么用呢?是用来帮助浏览器决定如何解析随后的实际页面内容的。其中最重要的头信息就是Content-Type(内容类型),比如:Content-Type: text/html。
“text/html”就是这个页面的“Content-Type”,也叫做“MIME类型”。
Content-Type作用:唯一确定某个资源本质上是什么,页因而决定了它该如何被浏览器呈现。
凡是在一个网页上能看到的东西,比如HTML、图片、脚本、视频、PDF文件,所有这些可以用一个URL地址定位的东西,都具有特定的MIME类型。
任何资源都有自己的MIME类型,不同的应用程序支持不同的MIME类型,整个web都依靠MIME类型运作。
举例:
图片文件的MIME类型:image/jpeg(JPEG图像)、image/png(PNG图像);
Javascript文件的MIME类型:application/x-javascript
CSS文件的MIME类型:text/css
不同资源对应的MIME类型详见:http://www.w3school.com.cn/media/media_mimeref.asp
你真的在使用XHTML吗?
XHTML 1.0:一份只是简单用XML重新表达HTML,而不增加任何新的元素和属性的规范。它定义了一种用于表示XHTML文档的新的MIME类型“application/XHTML+xml”。然而,这个MIME类型不是强制的,规范的附录C(是个漏洞)说到“XHTML页面依然可以以“text/html”这个MIME类型来发布”,这样做是为了让XHTML文档也能在HTML用户代理下正确呈现。
XHTML 1.1:
在XHTML1.0的基础上增加了一些细小特性,不过消除了附录C漏洞。也就是说从XHTML1.1开始,所有的XHTML文档都必须以“application/XHTML+xml”的MIME类型发布。
到底“application/XHTML+xml”和“text/html”这2种MIME类型会带来什么不同呢?
“application/XHTML+xml”这个MIME类型的文档必须遵循严格的错误处理规定(德拉科式的错误处理),即如果XHTML页面上哪怕只有一个错误,web浏览器也别无选择,只能停止继续处理并给用户报错信息;
“text/html”这个MIME类型的文档则不用遵循严格的错误处理规定,,浏览器对HTML是宽容的。即使你忘记了在html页面中写上<title>,浏览器还是会正确显示页面,虽然<title>对于html页面来说是必须的。正因为格式错误的HTML仍然可以在浏览器中显示,所以导致开发者们写出了很多错误的页面。要修复这么错误代价太大,于是开发者们选择了基本忽略application/XHTML+xml”这个MIME类型,将页面代码的语法升级到了XHTML,但是还是用“text/html”的MIME类型发布。
这正是XHTML
1.0留下的漏洞:“使用XHTML的语法,但是页面以“text/html”的MIME类型发布”。导致页面并不会引发XML的德拉科式错误处理,而是被一个宽容的HTML解析器处理,悄无声息地忽略掉任何代码错误。所以很多网页声称是XHTML 1.0的,但只有很少数网页声称自己是XHTML 1.1(或者XHTML 2.0)的。
总结:除非你使用application/XHTML+xml”这个MIME类型来发布你的网页,否则你所谓的“XHTML”只是名义上的XML而已。
相关文章推荐
- HTML4.01和XHTML1.0和XHTML1.1的一些区别
- 使用jstl1.1,注意与1.0的区别
- HTML4/4.01,XHTML 1.0/1.1/2.0,HTML5,之间有什么区别?
- XHTML 和 MIME 类型 - 使用Web 标准生成 ASP.NET 2.0 Web 站点~
- HTTP 1.1 和 HTTP 1.0的区别!
- CHAR,VARCHAR,VARCHAR2类型的区别与使用(zhuan)
- CHAR,VARCHAR,VARCHAR2类型的区别与使用
- CHAR,VARCHAR,VARCHAR2类型的区别与使用
- Oracle CHAR,VARCHAR,VARCHAR2类型的区别与使用
- http1.0与http1.1 的区别
- jstl1.0 与jstl1.1的小区别
- Oracle的几种字符类型的区别与使用
- CHAR,VARCHAR,VARCHAR2类型的区别与使用
- Oracle CHAR,VARCHAR,VARCHAR2类型的区别与使用
- 配置 Apache MIME 类型,为 XHTML 发送正确的
- ODP.NET 2.0使用注意事项以及与1.0的区别
- 使用临时表与声明一个表数据类型的变量有什么区别
- 使用XHTML1.0 Strict中需要特别注意的地方
- JSTL1.0和JSTL1.1的区别
- HTML 4.0 Strict和XHTML 1.0 STRICT里在标签里使用target属性