Subscribe My Most Popular Post
还是在上周末的时候,看到了Microsoft RSS Team的SLE(Simple List Extensions)扩展。三个单词中,最重要的是List,SLE主要是用来解决Feed订阅阅读模式的某种特定需求而产生的:
- Treat Feed as List
- Define customized sorting functions
- Define customized filting functions
从订阅者的角度来说,订阅了这种Feed,本地的Feed列表将完全和Feed服务器提供的保持同步。这种同步包括几个方面:
- Feed Item的次序与服务器上完全相同,如果有更新,则Feed Reader也会更新顺序
- Feed Reader不会缓存过期的Feed Item,如果某一个Item从Feed中删除,本地Feed Reader也会将它从本地(或者在线Feed Reader Storage)删除。
简单的说,你通过Feed Reader看到的Feed应该与Feed Publisher发布的完全一致。
这种特定应用的需求会有很多,比如典型的几种应用:
- Top 10 Best Seller - 比如Top 10 畅销书籍,Top 10 Music等等,对这种Feed的关注通常是更加关注于当前那10个;
- Wish List - 如果我已经得到了某个东西,就会把它从SLE中拿去,这样,订阅了我的Wish List的人也就不会再看到这个,不会送重复的东西了:);
- Open Positions - 当前职位列表,过期的职位通常意义不大。
可以看到,这些应用都有一些共同的特点,就是Feed本身更倾向于一种通知(Notification),过期的Item意义不大,而且,通常,这个List本身的次序是很重要的。
Specification很简单,通过以下这个声明来确定某个Feed是否是SLE(支持RSS2.0 & Atom),下面是一个RSS 2.0中的例子:
- <rss version="2.0" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005">
- <channel>
- <cf:treatAs>list</cf:treatAs>
- <title> Top 10 Popular Post </title>
- ..........
- ..........
- </channel>
- </rss>
Sorting和Grouping(Filtering)的规则举例:
- <cf:listinfo>
- <cf:sort ns="http://www.xerdoc.com/rss/pl/" element="date" label="Publish Date" data-type="date"/>
- <cf:sort ns="http://www.xerdoc.com/rss/pl/" element="rank" label="Popular Rank" data-type="number"/>
- <cf:sort ns="http://www.xerdoc.com/rss/pl/" element="comments" label="Comments" data-type="number"/>
- <cf:sort ns="http://www.xerdoc.com/rss/pl/" element="pingbacks" label="Pingbacks" data-type="number"/>
- <cf:sort ns="http://www.xerdoc.com/rss/pl/" element="trackbacks" label="Trackbacks" data-type="number"/>
- <cf:sort ns="http://www.xerdoc.com/rss/pl/" element="pageviews" label="Page Views" data-type="number"/>
- <cf:group ns="http://www.xerdoc.com/rss/pl/" element="author" label="Author"/>
- </cf:listinfo>
当然,SLE不止是一个针对于Feed Publisher的标准,还需要Feed Reader的支持。与一般的Feed不同,Feed Reader在处理SLE的时候会有一些特殊处理,现有的Feed Reader还基本上不支持SLE,除了IE7 Beta2。
为了试验,我做了一个简单的WordPress Most Popular Post的插件。基本的打分是采用Popular Context插件,根据留言数量,Pingback、Trackback数量,浏览数量等因素来确定一篇文章的受欢迎程度,最后,提供一个WordPress的Top 10 Popular Post的SLE,可以用IE7 Beta2订阅来看看效果。

右面可以根据Comments,Pingback,Pageview来排序,也可以Filter来选择某个作者的Post。
订阅:
Most Popular Post @ Xerdoc’s Weblog
Most Popular Post @ Meng Yan’s Weblog
相关阅读:
Simple List Extensions Specification
Simple List Extensions in action
Popularity: 69%
Related entries:
- No Related Posts

April 26th, 2006 at 4:04 pm
为什么comment内容不显示啊
April 26th, 2006 at 4:05 pm
cf:sort ns=”http://www.xerdoc.com/rss/pl/” element=”date” …
“http://www.xerdoc.com/rss/pl/”有什么作用?好像不能访问啊
April 29th, 2006 at 3:57 pm
to piscdong:
It’s XML element’s namespace.
May 9th, 2006 at 9:18 pm
网站更新(2006-05-09)…
1、改写部分JavaScript代码
主要是Ajax这部分代码,另外切换样式部分的程序以前是用Ajax调用PHP程序保存cookie,现在改成直接用JavaScript保存。
2、在RSS里加入SLE(Simple List Extensions)
接触SLE有一…