当前位置: 首页 > 图文教程 > 网页制作 > HTML/XHTML教程 > MIME Type 引出的两难困境

HTML/XHTML教程
HTML语言剖析(十三)其他标记
HTML语言剖析(十四)特殊字符
HTML语言剖析(十五)调色原理
HTML组件(HTML COMPONENTS)之一
HTML组件(HTML COMPONENTS)之二
HTML组件(HTML COMPONENTS)之三
HTML组件(HTML COMPONENTS)之四
HTML组件(HTML COMPONENTS)之五
HTML组件(HTML COMPONENTS)之六
HTML组件(HTML COMPONENTS)之七
HTML组件(HTML COMPONENTS)之八
用 iframe 解决下拉框与层之冲突
技巧运用无极限 HTML表格使用从入门到精通
HTML-加速、再加速(上)
HTML-加速、再加速(下)
CSS编写攻略
网页布局与颜色运用的基本准则
网页标准学习:标准的N种死法
做网站菜鸟如何成为高手
常用CSS缩写语法总结

HTML/XHTML教程 中的 MIME Type 引出的两难困境


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-04   浏览: 47 ::
收藏到网摘: n/a

  一切从一个糟糕的浏览器开始,它完全不支持 XHTML。

  什么是 MIME Type?

  为什么这么说呢?首先,我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 ……那么,浏览器是如何区分它们,绝对什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。

  媒体类型通常是通过 HTTP 协议,由 Web 告知浏览器的,更准确地说,是通过 Content-Type 来表示的,例如:

Content-Type: text/html

  表示内容是 text/html 类型,也就是超文本文件。为什么是“text/html”而不是“html/text”或者别的什么?MIME Type 不是个人指定的,是经过 ietf 组织协商,以 RFC 的形式作为建议的标准发布在网上的,大多数的 Web 服务器和用户代理都会支持这个规范 (顺便说一句,Email 附件的类型也是通过 MIME Type 指定的)。

  通常只有一些在互联网上获得广泛应用的格式才会获得一个 MIME Type,如果是某个客户端自己定义的格式,一般只能以 application/x- 开头。

  XHTML 正是一个获得广泛应用的格式,因此,在 RFC 3236 中,说明了 XHTML 格式文件的 MIME Type 应该是 application/xhtml+xml

  当然,处理本地的文件,在没有人告诉浏览器某个文件的 MIME Type 的情况下,浏览器也会做一些默认的处理,这可能和你在中给文件配置的 MIME Type 有关。比如在 Windows 下,打开的“HKEY_LOCAL_MACHINESOFTWAREClassesMIMEDatabaseContent Type”主键,你可以看到所有 MIME Type 的配置信息。

  浏览器处理 XHTML 和 HTML 有什么区别?

  HTML 的语法过于随意了,有许多简写,标记不匹配的复杂情况,同时长期 Web 发展下来积累下来了许多错误的用法——比如一个文档里完全没有 标记——但浏览器还是得支持它,可想而知,为了支持这些“Tag Soup”——也就是我们所说的那些,乱成一锅粥的标签——浏览器要很费力地去猜测一段标记的意思,努力以用户期望的形式表达出来。一句话说,虽然 HTML 4.01 允许你用语义化、结构化的、内容与表现分离的方法来书写标记,但由于它沿袭了 HTML 这种格式,使得浏览器对于凡是 MIME Type 为“text/html”的文件,都得采用一种非常费劲的方法去处理,这对于 Web 的发展是很不利的。

  再说除了浏览器,还有许多的用户代理要阅读 HTML:纯文本的浏览工具、读屏器等等。

  创造 XHTML,很大一部分原因正是要通过 XML 重新严格地规范一遍标记,让这些用户代理可以以一种更简便的方式来解析这些标记。因此,XHTML 这种新的格式,天生就要求内容的发布者必须以严格的方式来标记自己的文档。

  当然,XHTML 对于内容提供者也有好处,此处先不展开,详见下文。

  MIME Type 与之又有什么关系?

  把前两节的内容合起来,你显然可以发现:一个正常支持 XHTML 的浏览器会根据服务器提供的 MIME Type 是 text/html 还是 application/xhtml+xml 来区分获取到的内容是 HTML 还是 XHTML,对这两种格式,分别以两种不同的方式来解析文档,后者解析起来要严格得多,但对于用户代理开发者和内容提供者都有很大的好处。

  那么,那些浏览器正常的支持了 XHTML 呢?答案是 Mozilla、基于 Mozilla 的浏览器如 Netscape 7 和 、较新版本的 Opera 和 Safari 等等。但不包括 Microsoft Internet Explorer。问题是,这一“不包括”,就除掉了大约 90% 的浏览器市场啊,在我们抓狂以前,先来看看 是什么处理 application/xhtml+xml 的:IE 不认得这种 MIME Type,它要么提示你是否下载那个文件,要么就把文件内容当作纯文本显示出来,反正是不可能正常显示标记。

  这正是造成我们不得不给 XHTML 文档标以 text/html 的原因 1,实际上,目前 Web 上 95% 的 XHTML,都是扮成 HTML 的 XHTML (包括 w3.org),浏览器 (包括我们引以为傲的 Mozilla) 压根没有用 XML 解析器去解析那些 XHTML,而是沿用处理标签汤的老办法。

  这个时候你会问了,在我看起来,老办法显示得很好啊,干吗为此感到头疼呢?问题正是出在“看起来”这个词上,实际上,一些细微但是不可忽略的差别仍然存在。