zoukankan      html  css  js  c++  java
  • 重构之美-跨越Web标准,触碰语义网[开门见山:Microformat]

    连接
    ◆《重构之美》总目录
    上一篇:重构之美-跨越Web标准,拥抱语义网[废话先] (8-3 14:57)
    下一篇:重构之美-跨越Web标准,触碰语义网[分离:程序员请“远离”Web标准] (8-20 00:06)


    回锅文,写于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……

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


    连接
    下一篇:重构之美-跨越Web标准,触碰语义网[分离:程序员请“远离”Web标准] (8-20 00:06)
    上一篇:重构之美-跨越Web标准,拥抱语义网[废话先] (8-3 14:57)
    ◆《重构之美》总目录

  • 相关阅读:
    腾讯云短信接口完成验证码功能
    git使用的简要介绍
    drf分页组件补充
    drf中的jwt使用与手动签发效验
    django的认证演变过程分析
    drf三大认证补充
    drf三大认证
    IO事件
    配置Java环境变量
    各种O
  • 原文地址:https://www.cnblogs.com/yuntian/p/756917.html
Copyright © 2011-2022 走看看