MIME Type 引出的两难困境(3)
发布时间:2011-06-14 09:45:41
XHTML 的优势
最重要的两点是:
除了前面讨论的用户代理易于处理以外,实际上,大量的基于 XML 的工具,许多对 XML 有很好支持的编程语言,都能够方便地解析你的文档,从中提取出需要的信息。当然,也包括搜索引擎。
你可以利用 XHTML 继承自 XML 的良好的扩展性,比如在 XHTML 中嵌入 RDF 数据,描述文档的语义信息;加入 MathML 标记,描述数学公式;加入 SVG 标记,使用可伸缩矢量图型。
显然,如果文档连 well-formed 都做不到,优点 1 对你是无效的,就算有效吧,就个人来说,其实也没有多少人对 XHTML 进行 XML 解析,因为能做到的,大概也就是从 h1
、h2
这些标记中读出文档结构一类的功能,实在没什么大用处。
而第二点对大多数内容提供者来说,太远了,RDF 是什么东东?加入 RDF 信息有什么好处?没多少人知道或者有兴趣知道;MathML?这是可扩展性目前用得最多的地方,因为很多 MathML 阅读和编辑工具已经普及了,但如果你不是个成天在公式中打转的科学工作者,多半对此也没有兴趣;SVG 呢?倒是挺有意思,但目前显然没有获得广泛的应用,事实上,日后能否获得广泛的应用,还要看它能不能在与 Flash 的竞争中活下来:成为标准的东西被人抛弃也是常有的事。
总结起来,所有这些优点几乎都是一些空头支票,一些未来才能实现甚至未来都不知道能不能实现的东西,比如说你现在在开发一个 CMS 系统,如果现在都已经不能保证里面的内容 well-formed,有什么理由说以后,数据越来越多以后,反而会回头去把错误的标记一一改正?
事实上,用不到这些空头支票,我们的生活几乎没有受到任何影响。
那么,是否这就是说,XHTML 几乎就是一个鸡肋了 ?
XHTML 啊 XHTML
行文至此,已经陷入了僵局,其实我本无意把 XHTML 说得那么差的,但问题是我每句说的都是实话呀,也没有忽略什么有必要提到的因素,但反复查考,总结起来还是那一句话:XHTML 其实是一个带一点理想主义的,对普通用户来说,相比 HTML 4.01 并没有显见优势的格式。
于是我们就陷入了两难困境:刨掉那些花言巧语,没有任何显见的优点吸引我们我们转向 XHTML,但如果我们永远躺在 HTML 4.01 舒服的被窝里,Web 岂不是永不前进了?
答案还是个问号。
小结
本来,仅仅为了未来的锦绣图景,大家多数还是愿意转向 XHTML 的,这大概是个博弈论中微妙的平衡,用户、浏览器厂家、标准制定者三家玩的一个游戏,但 IE 打破了这个平衡:它不支持 application/xhtml+xml
,于是用户只好都以 text/html
来发布 XHTML 页面。
如果把他们人格化:我觉得“用户”大概是个剃头挑子一头热的家伙,他们为自己的 XHTML 页面在一切浏览器上都如此美好而感到满意,却浑不知道背后其实还是 HTML,自己没沾着一点“X”的好处。
这时标准制定者——他一定是个理想主义者——也不满意,因为用户其实还是在以 HTML 的方式来写 XHTML 的,根本没准备好向 XHTML 进行转变的决心,标准制定者一心领着大家往 Web 美好的未来远航,却发现无论是用户还是浏览器厂商都在尽给他添乱。
浏览器厂商们——他们拥有最大的筹码,却始终冷眼旁观——此时却在开心地内斗,对此情况耸耸肩表示无能为力。
你可能会对此感到沮丧,但这的确是目前 Web 中的事实,承认也好不承认也好,确定一个目标,然后艰难而执著地前行,大概是我们这些标准推广者唯一能做的。
注释
也并非完全没有办法,对于用 PHP 或者 ASP 这样创建的动态内容而言,通过检测 HTTP 头来进行内容协商是最好的办法:给 `Accept: ` 中包含了 `application/xhtml+xml` 的请求提供 `Content-type: application/xhtml+xml` 的数据,而给其他的请求提供 `text/html` 的数据。(在 456 Berea Street 的一篇文章详细解释了这种方法,实际上,打开 Mozilla/Firefox 的 `about:config` 页面,你可以找到相关的配置 `network.http.accept.default` 来验证一下 Mozilla 是否发送了正确的 HTTP 头。),这几乎是一种完美的方法了 (实际上静态内容大概可以通过 Web 服务器的内容协商功能实现这种提供方式),但考虑到本文主要的目的是探讨是否应该用 XHTML,所以不在正文中详细讨论。
仍旧是指对普通用户而言,事实上必须承认,XHTML 的出现对于整个 Web 本身的长远发展绝对有好处。
其实话不该说得那么绝,应该说 XHTML 的出现是绝对有必要的,但其带来的好处绝大部分是对 Web 本身的,长远的,现在难以看出的好处,对用户或者开发者的好处微乎其微。
参考文献
Ian Hickson, Sending XHTML as text/html Considered Harmful
Gez Lemon, It’s all in the MIME
Gez Lemon, Specifying a MIME Type
Roger Johansson, Developing With Web Standards, Recommendations and best practices, Part 5: XHTML
Network Working Group, The ‘application/xhtml+xml’ Media Type
Tommy Olsson, Content Negotiation
W3C, XHTML Media Types
猜你喜欢
- 以下的文章主要介绍的是MySQL 查询缓存的实际应用代码以及查看MySQL 查询缓存的大小 ,碎片整理,清除缓存以及监视MySQL 查询缓存
- 集群是一种实现高可用性的有效解决方案,有时它会适得其反。而且,它还非常昂贵。因此,数据库管理员可使用日志转移代替集群来提供较高的可用性。日志
- 目前SQL INJECTION的攻击测试愈演愈烈,很多大型的网站和论坛都相继被注入。这些网站一般使用的多为SQL SERVER数据库,正因为
- CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个四位的数
- HTTP应答头概述 Web服务器的HTTP
- http://swik.net/Ajax/Ajax+Mistakes在某网站瞎逛时,发现这个链接,进去逛了逛,觉得很有意思,大家也可以去看看
- EXISTS该函数返回集合中第一个元素的索引,如果集合为空,返回NULLNULLNULLCollection.EXISTS(index)CO
- 说起模板引擎,很多人会认为这是后台的东西(如PHP的Smarty、Java的Velocity),跟前端没有关系。然而,随着前端的逻辑变得越来
- 我想做一个页面,10秒后转向其它页。想在网页中显示10秒的倒计时。谢谢了。对JS不懂 方法一:<html><h
- 实现一个AuditLog的功能,是B/S结构专案。 每个用户可以登录系统,在程序中操作数据(添加,更新和删除)需要实现记录操作跟踪。是谁添加
- <%@ transaction = required %><%response.b
- 注:我指一个网站被第三方网站以iframe的形式调用时,被调用网站的禁止策略 和 调用网站的突破禁止策略,跟XSS麽关系,但跟clickja
- <% Rem Rem ## 在线升级类声明 Class Cls_oUpdate
- 数据库设计(Database Design)的概念:数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之
- 如果查询结果很多,服务器解释你的ASP script将花费大量的时间,因为有许多的Response.Write语句要处理. 如果你将输出的全
- JavaScript Length 字符长度函数,在很多时间我们会用length函数了,因为你得前台判断一个用户输入
- 最近关于HTML5吵得火热,很多人认为HTML5出现会秒杀Flash,以至于在各大web前端开 * 坛吵得不可开交。论坛里三言两语说的不够 尽
- asp中fso怎样判断一个盘上是否有文件,实例代码,需要的朋友可以试试:<% dim objfolder dim
- 在seclists中看到一个很惊人的thread:http://seclists.org/oss-sec/2012/q2/493MySQL爆
- 关于浏览器的最离奇的统计结果之一就是Internet Explorer 版本6,7和8共存。截至本文,Internet Explorer各个