MIME Type 引出的两难困境
一切从一个糟糕的浏览器开始,它完全不支持 XHTML。 [b]什么是 MIME Type?[/b] 为什么这么说呢?首先,我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 Flash……那么,浏览器是如何区分它们,绝对什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 [font=新宋体]Content-Type[/font] 来表示的,例如:
Content-Type: text/html 表示内容是 [font=新宋体]text/html[/font] 类型,也就是超文本文件。为什么是“[font=新宋体]text/html[/font]”而不是“[font=新宋体]html/text[/font]”或者别的什么?MIME Type 不是个人指定的,是经过 ietf 组织协商,以 RFC 的形式作为建议的标准发布在网上的,大多数的 Web 服务器和用户代理都会支持这个规范 (顺便说一句,Email 附件的类型也是通过 MIME Type 指定的)。
通常只有一些在互联网上获得广泛应用的格式才会获得一个 MIME Type,如果是某个客户端自己定义的格式,一般只能以 [font=新宋体]application/x-[/font] 开头。
XHTML 正是一个获得广泛应用的格式,因此,在 [url=http://www.ietf.org/rfc/rfc3236.txt][color=#0000ff]RFC 3236[/color][/url] 中,说明了 XHTML 格式文件的 MIME Type 应该是 [font=新宋体]application/xhtml+xml[/font]。0r1rWAM"G0].to"j*h|
当然,处理本地的文件,在没有人告诉浏览器某个文件的 MIME Type 的情况下,浏览器也会做一些默认的处理,这可能和你在操作系统中给文件配置的 MIME Type 有关。比如在 Windows 下,打开注册表的“[font=新宋体]HKEY_LOCAL_MACHINESOFTWAREClassesMIMEDatabaseContent Type[/font]”主键,你可以看到所有 MIME Type 的配置信息。
[b]浏览器处理 XHTML 和 HTML 有什么区别?[/b] HTML 的语法过于随意了,有许多简写,标记不匹配的复杂情况,同时长期 Web 发展下来积累下来了许多错误的用法——比如一个文档里完全没有 标记——但浏览器还是得支持它,可想而知,为了支持这些“TagSoup”——也就是我们所说的那些,乱成一锅粥的标签——浏览器要很费力地去猜测一段标记的意思,努力以用户期望的形式表达出来。一句话说,虽然HTML 4.01 允许你用语义化、结构化的、内容与表现分离的方法来书写标记,但由于它沿袭了 HTML 这种格式,使得[b]浏览器对于凡是 MIME Type 为“[font=新宋体]text/html[/font]”的文件,都得采用一种非常费劲的方法去处理[/b],这对于 Web 的发展是很不利的。
再说除了浏览器,还有许多其他的用户代理要阅读 HTML:纯文本的浏览工具、读屏器等等。