重构之美-跨越Web标准,触碰语义网[开门见山:Microformat]

简介:

回锅文,写于2007-5-23 12:21

Microformat,认识它的时候很神奇。我查了一下在标准群里的聊天记录:
2006-06-23 16:42:45 爆牙齿郑旻()
晕,标准就标准嘛,微软又偷换概念了,微格式(Microformats)
http://www.xml.com/lpt/a/2005/03/23/deviant.html 
2006-06-23 16:44:46 old9()
http://microformats.org/ 
2006-06-23 16:51:49 爆牙齿郑旻()
看了几个hcard的实例,真TMD乱来
懒得理 
2006-06-23 16:52:52 爆牙齿郑旻()
居然还可以堂而皇之的冠名:hCard
确实牛 
2006-06-23 19:25:30 Realazy.org()
这是微软的吗? 
2006-06-23 19:26:45 Realazy.org()
看清楚哦 

2006-06-26 22:05:10 Realazy.org()
嗯,对,最近谁在关注microformats没? 
2006-06-26 22:05:21 old9()
暴牙? 
2006-06-26 22:05:35 Realazy.org()
Yahoo已经用上了。http://upcoming.org 
2006-06-26 22:05:48 x5.liu()
最近看到太多人提microformats了
谁能给我简单解释一下 
2006-06-26 22:06:11 爆牙齿郑旻()
我没关注 
2006-06-26 22:06:21 Realazy.org()
简单的说,是在兼容当前XHTML的前提下组织信息的一种方式 
2006-06-26 22:06:47 Realazy.org()
通过这个标准的格式,方便于各种不同的用户端来处理 
2006-06-26 22:07:00 爆牙齿郑旻()
定个小规矩取个名字就OK了 
2006-06-26 22:07:09 jjgod()
Microformats 要有一些比较漂亮的演示才会有人关注阿 XD 
2006-06-26 22:07:43 Realazy.org()
http://upcoming.org/ 上有一些不错的例子 
2006-06-26 22:07:45 x5.liu()
恩,近期我研究研究这个东东 
2006-06-26 22:08:09 爆牙齿郑旻()
Microformats的XHTML结构就不好,烂,依赖class算啥,我简单这么认为的哈
2006-06-26 22:08:44 Realazy.org()
当前只能做到如此了 
2006-06-26 22:08:51 Realazy.org()
http://corkd.com/ 
2006-06-26 22:08:59 Realazy.org()
这里也有些应用 
2006-06-26 22:09:32 x5.liu()
我上upcoming.org了,具体哪个地方是microformats的应用? 
2006-06-26 22:09:39 Realazy.org()
如果使用单纯的XML当然好,但是会提高门槛 
2006-06-26 22:09:49 Realazy.org()
http://upcoming.org/event/46123/ 
2006-06-26 22:10:18 爆牙齿郑旻()
XHTML它也用的很烂啊,还没说xml呐 
2006-06-26 22:10:26 Realazy.org()
Export...那里有简单的应用 
2006-06-26 22:10:42 Realazy.org()
怎么个烂法? 
2006-06-26 22:11:18 爆牙齿郑旻()
还没看 

之后群里不时的对microformat的一些讨论就不发来凑字数了,我只是想说当我第一眼看见microformat的时候极为不齿,甚至没细看,肤浅的因为“micro”就想当然的认为它是微软的东东,我大概记得当时还说过这么一句:“不就是一套class命名规则嘛,老子也定义一套class命名规则,然后叫它爆格式。”但是3个月后,当我在部署标准过程中遇到了一个很棘手的问题时,我猛然想起了microformat,可惜当时自己身陷在繁琐流程、大小会议和沉重的编码设计压力中无法静心思考。今年年初的时候,我终于有机会安静下来,带着自己一直的困惑再度审视microformat后,终于感觉上有所斩获。具体怎样下次再表,我们先还是来认识一下曾被我鄙视的,大名鼎鼎的Microformat。

Microformat到底是什么东东?上面对话中,其实Realazy已经做了简单总结:是在兼容当前XHTML的前提下组织信息的一种方式,通过这个标准的格式,方便于各种不同的用户端来处理。这个比较抽象,我们把它扩展开来。

google了好一阵,都没能找到Microformat的起点,能找到的最早的文献就是我上面的那个链接:http://www.xml.com/lpt/a/2005/03/23/deviant.html。从时间上看是2005年3月23日,发展至少都两年多了,我是在一年多后才接触,两年后才思考,真不合时代节奏,落伍啊。

对Microformat的解释大家可以通过google进行了解,英文强的兄弟可以直接访问Microformats.org了解和学习,中文资料方面比较零散和缺乏,我也没什么好建议。

文字没有实例直观,就像文档没有设计稿直观一样。那么现在我们先直接来看一个实例:将“<cite>Dr. John Philip Paul Stevenson, Jr., M.D., A.C.P.<cite>”格式化为hCard Microformat。

格式化后的结果是:
<cite class="fn n">
    <span class="honorific-prefix">Dr.</span>
    <span class="given-name">John</span>
    <span class="additional-name">Philip</span>
    <span class="additional-name">Paul</span> 
    <span class="family-name">Stevenson</span>,
    <span class="honorific-suffix">Jr.</span>,
    <span class="honorific-suffix">M.D.</span>,
    <span class="honorific-suffix">A.C.P.</span>
</cite>

怎么样?感受如何?我的第一个反应,第二个反应……反应无数次后就是放在现在仍然是两个字:夸张。至于嘛,一句话用这么多的标签来格式化,每个都有class,每个class都很大方,长长的。当然这里我例举了一个比较极端的实例(晕人的专例^_^)。其实Microformat在大多数情况下相对而言代码上是没那么冗余的。下面我们来看另外一个不极端的Microformat。

这是常规的一个页脚呈现,来自http://microformatique.com/: 
© 2007 John Allsopp | Thanks, WordPress | Barthelme theme by Scott Allan Wallick | Standards compliant XHTML & CSS | RSS: Posts & Comments
在这个页脚里面有两个微格式:

1、John Allsopp
<span class="vcard">
    <a class="url fn n" href="http://westciv.com">
        <span class="given-name">John</span>
        <span class="family-name">Allsopp</span>
    </a>
</span>

2、Scott和上面类似我就不写了。

我加粗部分就是为了微格式化而必要的代码,这么一看好像也不怎么常规,如果不使用微格式,同样的表现只需要短短的<a href="http://westciv.com">John Allsopp</a>就可以完成。看起来冗余代码依旧很多,那么是否冗余呢?其实这也是我一直迷惑的。其实我也一直在试图说服自己和他人包括现在的读者你:这是有用的。但是……这个这个先暂且放下。

为什么要这么做,增加这么多的标记?Microformat曰:语义化、API。通过这种方式申明数据的语义,形成API,将数据开放出来。问题又来了,需要吗不需要吗需要吗?研究研究?我相信未来的互联网,语义网一定是开放的互联网,不会像现在这样数据无法畅通无阻,存在大量的信息孤岛和信息盲点。但是我们不在明天我们在今天啊,今天需要吗不需要吗需要吗?……靠,不研究了还是先暂且放下。

好吧,增加了这么多代码,好处在哪里?给我一个应用实例。Microformat曰:firefox的Operator插件。耐着性子下载下来,再打开http://microformatique.com/,Operator工具栏上的Export Contact有了数字“3”,他识别出了页面上的3个hCard,选择John Allsopp,Operate提示Outlook打开或下载,下载下来一个hCard.vcf文件,vcf是一种通用的电子名片文件格式。可以被导入各种识别该格式的设备(如手机)和软件(如Outlook)中。打开这个hCard.vcf文件,看见如下代码:

BEGIN:VCARD
PRODID:
SOURCE:http://microformatique.com/?p=160
NAME:microformatique - a blog about microformats and data at the edges : some finer points of hCard and n optimization
VERSION:3.0
N;CHARSET=UTF-8:Allsopp;John;;;
FN;CHARSET=UTF-8:John Allsopp
UID:
URL:http://westciv.com/
END:VCARD

我加粗的地方是可以从页面中获取的数据,而其他部分是Operator按.vcf标准对数据进行的转换,可不可以这么理解呢:Operate充当了xsl的角色,将“xml”转为“xhtml”,将一种标准转为另一种标准。这么一看,要实现这种转换确实需要添加代码申明每个数据的语义,否则无法使得程序读懂数据从而匹配的进行转换。

好了,有所理解了,也对为此增加的额外的、大量的标记有了理论上的认可……可是但是以及But,理论终究是理论,放到实践中,根本没有多大的意义嘛!

  1. 目前支持microformat只有Firefox的Operator插件。
  2. Firefox市场占有率对于中国,即便它在发展壮大,还是奇低。平均高估一下:FF占有率10%吧。
  3. 使用Firefox的人群能有几个人知道Operator?连我都一直不知道,更不要说其他人了,更不要说人民群众了。再平均高估一下:1%吧(100个Firefox中有1个装了Operator)
  4. 装了Operator的人已经处于领域浪尖了,好了,有几个人真正在使用,而不是看着Operator上出现的识别数字YY?坦白的说,我装了Operator后,行为上属于后者,纯粹YY。去导出hCard?然后干嘛呢?我疯了,我有病!……继续高估:1%(100个安装了Operator的人中有1个人在真正使用)
  5. 好了,你突破了上述种种关卡,成为了浪尖上冒泡的水花,精英中中奖的英雄,骄傲吧……请问你访问100次网站,能用几次?你雄心壮志的以为中奖,结果是什么都没有,安全期……TT,最后的结局是:1%。
计算计算:10%×1%×1%×1%等于多少?千万分之一!!!那个使用microformat的家伙、用户,是千万分之一的恐龙人。为了这千万分之一的应用可能,我们有必要去学习和应用吗?我们这些打工仔们跳槽的机率,几个数量级的高于我们应用的microformat被用户所使用。……

什么是梦想,什么是现实,什么是梦想照不进现实,诠译得多么准确。microformat……

开门见了山,横在路中间……登还是绕?


本文转自爆牙齿博客园博客,原文链接:http://www.cnblogs.com/yuntian/archive/2008/08/11/756917.html,如需转载请自行联系原作者

相关文章
|
监控 安全 测试技术
用 Python 撸一个 Web 服务器-第7章:重构——更好的组织代码
用 Python 撸一个 Web 服务器-第7章:重构——更好的组织代码
|
Web App开发 前端开发 JavaScript
认识Web和Web标准
《前端基础》
231 0
|
Rust 前端开发 JavaScript
Web 标准与前端开发 | 青训营笔记
Web 标准与前端开发 | 青训营笔记
120 0
Web 标准与前端开发 | 青训营笔记
|
前端开发 JavaScript
web浏览器常用内核和web标准
web浏览器常用内核和web标准
121 0
web浏览器常用内核和web标准
|
XML 敏捷开发 应用服务中间件
WEB核心【Servlet配置和注解重构用户登录】第八章
本篇章主要讲Servlet,两个重点:Servlet路径配置,Servlet注解开发,了解内容Servlet继承数及生命周期,Servlet路径配置,ServletConfig配置
WEB核心【Servlet配置和注解重构用户登录】第八章
|
Web App开发 前端开发 JavaScript
Node.js Web 框架再进化 - 面向前端与未来标准
Web 开发一直是 Node.js 的主流方向,无论新人必学的 Express / Koa,或者是社区流行的企业级框架 Egg / Nest,各类 Web 框架层出不穷。本次分享来自阿里巴巴前端技术专家刘子健(繁易)在第十六届D2前端技术论坛的分享,为大家带来 Node.js Web 框架的发展历程,分析各类框架的适用场景及利弊,并基于阿里的 Node.js 框架 Midway,为大家介绍在过去这两年,我们对下一代 Node.js Web 框架的思考、设计、实践,包含如何面向前端做一款前端“爱用”的 Node.js 框架,如何面向未来标准甚至参与标准来设计 Node.js Web 框架两部分。
396 1
Node.js Web 框架再进化 - 面向前端与未来标准
html+css实战4-初识:web标准
html+css实战4-初识:web标准
110 0
html+css实战4-初识:web标准
|
前端开发 JavaScript 小程序
聊聊各端手势体系以及对 Web 标准手势的思考
聊聊各端手势体系以及对 Web 标准手势的思考
24487 2
聊聊各端手势体系以及对 Web 标准手势的思考
|
SQL 安全 大数据
【基础理论-WEB测试】面试官让你介绍下web测试,标准的高大上回答如下:
【基础理论-WEB测试】面试官让你介绍下web测试,标准的高大上回答如下:
|
XML JavaScript 前端开发
web标准 | 学习笔记
快速学习web标准
160 0
web标准 | 学习笔记
下一篇
无影云桌面