今天,您可以发现成千上万的 RSS 提要。Weblog 用户、新闻出版商、政府代理以及许多个人和商业 Web 站点都支持这种格式。Java 技术、PERL、PHP、Python 和其他主要编程语言,都为开发人员提供了处理 RSS 的工具。许多阅读器和聚集器都工作在 Web、桌面甚至 e-mail 客户程序中。RSS 已成为 Internet 上连锁内容和元数据事实上的标准。
本文将观察现行的 RSS 2.0 规范。我不准备讨论格式上丰富多彩的特征以及围绕它的争论,否则就无法讨论其他内容了。
相反,本文将为您提供少量背景知识,考察这种格式的用法,并列出一些比较流行的处理这种格式的工具。文中将讨论这种格式的具体细节,给您一些例子,并说明在开始之前您需要了解哪些东西。最后,本文将涉及到 RSS 2.0 的一些新特性。在文章的最后,您将找到丰富的矿藏 —— 一份长长的、带有注释的 RSS 参考资料列表。
什么是 RSS?
RSS 是 Internet 上连锁内容和元数据的一种格式。通常用于共享标题和到新闻文章的链接。对于新闻文章,真正的文章不一定是共享的,但是关于文章的元数据通常是共享的;这种元数据可以包含标题、URL或者摘要。对于出版商而言,RSS 是一种重要的工具,因为提要可用于连锁内容,并把第三方的内容集成到您的站点中。
RSS 是一种 XML 方言。所有的 RSS 文件必须符合万维网联盟(World Wide Web Consortium,W3C)Web 站点上发布的 XML 1.0 规范。
下面是一个典型的例子,说明了如何使用 RSS:
- 一个出版商有一些希望发布的内容。
- 他们为这些内容创建了一个 RSS 频道。
- 在这个频道中包含了关于希望宣传的网页的一些项。
- 这个频道可以被远程应用程序读取并转换成标题和链接。这些链接可以加入到新的 Web 页中或者供专门的读者阅读。
- 人们从不同的站点看到这个链接,单击连接进入最初出版商的网站。
尽管标题连锁是最常见的 RSS 用法,但也可用于其他目的。RSS 在 weblog 社区中是一种非常流行的格式。它也被用于照片簿、分类广告列表、食谱、评论以及跟踪软件包的状态。
RSS 提要在电子商务中用作一种传递信息的方式。比如,Amazon 根据其 Web 服务平台向客户提供新闻提要。从而使您能够在新闻阅读器中了解最畅销的图书,或者在您的 Web 站点中包括关于 Amazon 销售的相关图书的信息。
过去几年中,RSS 在普及性方面有了惊人的增长。Syndic8.com 维护了一个 RSS 频道索引,它的提要列表在两年中加长了大约 1400%。Yahoo 新闻、BBC、Slashdot、LockerGnome、Amazon、CNN、Wired、Rolling Stone 和 Apple Computer 都位于许多最普及的 RSS 提要来源之列。
新闻阅读器
随着新闻提要数量的增加,出现了一种新的软件类型:新闻阅读器。新闻阅读器是 个人聚集器—— 帮助您发现和组织感兴趣的频道列表。一旦选择了频道,您就可以使用阅读器一致的界面查看这些频道。新闻阅读器检查您所感兴趣的频道的更新,并转化成可以浏览的 HTML。
一种流行的新闻阅读器是 BlogExpress:
图 1. 在 BlogExpress 中查看 alphaWorks
BlogExpress 是所谓的“匹萨软件”—— 意思是说,如果您喜欢这个软件,您可以寄给作者一些买匹萨饼的钱。
定制频道
在 BlogExpress 中增加一个频道很容易。比方说,您对追踪 IBM alphaWorks站点上的活动感兴趣。您要做的第一件事是,取一个要增加的提要:
图 2. 在 alphaWorks 找到的新闻提要
增加一个提要很容易,桔黄色的“XML”标志常用于链接公共 RSS 提要。在多数 Web 浏览器中,您都可以右击“XML”标志复制链接并粘贴到您的新闻阅读器中。
其他常见的新闻阅读器包括 BlogStreet、FeedReader、AmphetaDesk 和 NewsGator。
发现 RSS 提要
可以使用搜索引擎查找 RSS 格式的内容。比方说使用 Google 时,您可以在查找中增加“filetype:rss”以搜索 .rss 文件中的查找项。
专门的搜索引擎使内容搜索更加容易。Feedster 监视 weblog 并允许您通过一个日志项索引查找,按照相关性、日期、等级(logrank)查看。当您在搜索时,Feedster 按照您的要求创建一个 RSS 提要。这个提要可以增加到您的新闻阅读器中,以便您能够看到所有与搜索请求有关的最新活动,您甚至不需要离开新闻阅读器。
DayPop 搜索新闻、blog 和 RSS 提要。它让您在 weblog 世界跟踪流行的新闻。它提供了目前最流行的 40 个 weblog 链接。这是全世界最流行文章的链接。它创建了一个 weblog 中所用最热门词汇的列表。它还根据引用对 weblog 评级,提供最受其他 weblogger 欢迎的 weblog 列表。您也可以自定义搜索。评级列表和自定义搜索都有 RSS 提要形式,可以导入您的新闻阅读器。
RSS 2.0 的新特性
RSS 2.0 建立在 RSS 0.91 规范的基础上。它是向后兼容的,因此任何处理 RSS 2.0 的工具应该也能够处理 0.91 提要。升级后的规范增加了少量元素,比如 <cloud>
和 <guid>
。
它也去掉了一些限制。在过去, <link>
和 <url>
元素只能是 http 或 ftp,现在可以使用任何有效的 URI。在 RSS 0.91 中,每个频道只能包含 15 个项,而且元素的长度也有限制,现在这些限制都取消了。不过仍然应该小心使用较大的值,因为它们可能对老的应用程序造成问题。
不过更大的变化是能够使用名称空间扩展这种格式。RSS 2.0 支持名称空间,一种增加规范中没有的元素的标准方法。只要定义在一个名称空间中,提要可以包含新的元素。
RSS 2.0 概述
RSS 是一种 XML 方言,用于连锁 Web 内容和元数据。RSS 0.91 是几种可用版本中最常用的一种。对于新的 RSS 提要,更好的办法是使用 2.0 版,因为这是现行的规范,而且如前所述,它与 0.91 向后兼容。
Dave Winer 编写了规范的 2.0 版。规范的修改可能变得难以使用,或者损害已有的应用程序,他有意识地避免了这种情况。Winer 总结了他的思想:“保持简单。这就是 RSS 的价值所在。任何稍微了解 HTML 的人都能够理解 RSS。这一点极其重要!”
该规范在 Creative Commons 许可下发布。这意味着您可以免费复制和分发该规范,并进行衍生工作,而且可以自由地用于商业工作。一个咨询委员会负责更新规范、推广规范和编写文档。
RSS 文件形式
RSS 文件由一个 <channel>
元素及其子元素组成。除了频道内容本身之外, <channel>
还以项的形式包含表示频道元数据的元素 —— 比如 <title>
、 <link>
和 <description>
。项通常是频道的主要部分,包含经常变化的内容。
频道
频道一般有三个元素,提供关于频道本身的信息:
<title>
: 频道或提要的名称。<link>
: 与该频道关联的 Web 站点或者站点区域的 URL。<description>
: 简要介绍该频道是做什么的。
许多频道子元素都是可选的。常用的 <image>
元素包含三个必需的子元素:
<url>
: 表示该频道的 GIF、JPEG 或 PNG 图像的 URL。<title>
: 图象的描述。当频道以 HTML 呈现时,用作 HTML<image>
标签的ALT
属性。<link>
: 站点的 URL。如果频道以 HTML 呈现,该图像作为到这个站点的链接。
<image>
还有三个可选的子元素:
<width>
: 数字,表示图象的像素宽度,最大值是 188,默认值为 88。<height>
: 数字,表示图象的像素高度。最大值是 400,默认值为 31。<description>
: 包含文本,在呈现时可以作为围绕着该图像形成的链接元素的title
属性。
此外还可以使用许多其他可选的频道元素。多数都是不言自明的:
<language>
: en-us<copyright>
: Copyright 2003, James Lewin<managingEditor>
: dan@spam_me.com (Dan Deletekey)<webMaster>
: dan@spam_me.com (Dan Deletekey)<pubDate>
: Sat, 15 Nov 2003 0:00:01 GMT<lastBuildDate>
: Sat, 15 Nov 2003 0:00:01 GMT<category>
: ebusiness<generator>
: Your CMS 2.0<docs>
: http://blogs.law.harvard.edu/tech/rss<cloud>
: 允许进程注册为“cloud”,频道更新时通知它,为 RSS 提要实现了一种轻量级的发布-订阅协议。<ttl>
: 存活时间是一个数字,表示提要在刷新之前缓冲的分钟数。<rating>
: 关于该频道的 PICS 评价。<textInput>
: 定义可与频道一起显示的输入框。<skipHours>
: 告诉聚集器哪些小时的更新可以忽略。<skipDays>
: 告诉聚集器那一天的更新可以忽略。
项
项通常是提要中最重要的部分。每个项都可以关于某个 weblog、完整文档、电影评论、分类广告或者任何希望与频道连锁的内容的记录。频道中的其他元素可能不变,但项经常发生变化。
您可以有任意多个项。以前的规范限值为 15 个项,如果要保持向后兼容这仍然是一个很好的上限。
新闻项的元素
每个项通常包含三个元素:
<title>
: 这是项的名称,在标准应用中被转换成 HTML 中的标题。<link>
: 这是该项的 URL。title 通常作为一个链接,指向包含在<link>
元素中的 URL。<description>
: 通常作为 link 中所指向的 URL 的摘要或者补充。
所有的元素都是可选的,但是一个项至少 要么 包含一个 <title>
,要么包含一个 <description>
。
项还有其他一些可选的元素:
<author>
: 作者的 e-mail 地址。<category>
: 支持有组织的记录。<comments>:
关于项的注释页的 URL。<enclosure>
: 支持和该项有关的媒体对象。<guid>
: 唯一与该项联系在一起的永久性链接。<pubDate>:
该项是什么时候发布的。<source>
: 该项来自哪个 RSS 频道,当把项聚合在一起时非常有用。
清单 1 是一个 RSS 2.0 文件的例子。注意,频道包含在 <rss version="2.0">
中。这是一个非常基本的例子,说明了项和图像如何包含在频道中。所示的元素都是最常用的频道子元素。
清单 1. 示例 RSS 2.0 文件
|
相关工具
由于 RSS 的普及,出现了许多工具,使您能够基本上在任何环境中使用这些文件:
- Java 技术:可在 Sun 站点上找到的一个 RSS Utilities Package,支持在 JavaServer Pages 中使用 Tag Library。它还包括一个 RSS 解析器。
- Perl:已经有几种 Perl 工具处理 RSS。XML::RSS 提供了创建和维护 RSS 文件的一个框架。它支持在常用版本之间的转换。
- Python:RSS.py 是一组通过 Python 使用 RSS 频道的类。
此外,许多内容管理和 weblog 工具也直接支持 RSS。多数 weblog 工具,包括 Movable Type、Blogger 和 Radio Userland 都支持 RSS。一些内容管理系统,包括 Zope 和 CityDesk 现在也支持它了。
扩展 RSS
RSS 2.0 有许多可选元素,包括多数频道都需要的那些元素。但是它还支持扩展性,因此您可以使用规范中没有的元素。不过,RSS 2.0 规范并没有花费多少时间定义如何实现扩展。关于扩展性,规范中总结为:“RSS 提要可以包含本页中没有描述的元素,只要这些元素定义在一个名称空间中。”
这就留下了很大的想像空间!所幸的是,规范中包含一个例子,您可以参考目前使用的几个例子。
基本的思想是您可以增加需要的标签 —— 但是,增加带有多种含义的元素太容易了。使用您的频道的人们可能并不知道某个标签是什么含义。比如,如果我要在一个频道中使用 <analog>
标签,它的含义就不很清楚。Web 专家可能认为这个标签指的是 Analog,它是最流行的 Web log 文件分析器。科幻迷可能认为这个标签是关于 Analog 的,一本经典的科幻杂志。音乐家可能认为它指的是流行的合成器类型,生物学家认为这是一种器官,电子工程师认为是一种电路。含糊性使人们很难理解标签的含义。
因此,RSS 允许您增加所喜欢的任何标签,但是要求必须和名称空间一起使用。这样有助于澄清标签的含义。
再回到 <analog>
的例子,我可能希望创建一组关于电子商务的标签,并让 <analog>
标签作为一个“e-business”元素。为此,我增加如下的名称空间:
|
这就创建了一个名为“ebusiness”的名称空间,并表明这个名称空间的文档在我的站点上。为了使用 <analog>
标签,我可以使用这种格式: <ebusiness:analog>
。这样就能与其他类似的含义中区分开来,比如 <sciencefiction:analog>
或 <synthesizers:analog>
。
关于扩展性,一个更实际的例子可以在 RSS 2.0 规范的示例文件中找到:
清单 2. RSS 2.0 规范示例文件中的名称空间
|
在这个例子中,定义了一个称为 blogChannel
的名称空间。它指向一个文档,该文档解释了几种常见于 weblog 的新元素的用法。其中之一是 <blogroll>
。文档说明,blogroll 是 weblog 中的一个链接集合,指向与您的 weblog 内容相关的站点。
<blogChannel:blogRoll>
标签提供了用户或软件所需要的信息,知道 blogRoll
是一个定义在 blogChannel
名称空间中的元素,而且可以找到这个文档的位置。
同样,RSS 2.0 只对 不属于规范的元素要求名称空间。所有的基本标签都假定在 RSS 2.0 名称空间中。这使得这种格式更容易使用,因为除非需要扩展 RSS,否则您完全不需要知道名称空间。
结束语
本文考察了 RSS 在内容连锁和聚合领域的重要性。文章主要讨论 RSS 2.0,因为这是最新的规范版本,而且正在迅速普及。本文也考察了处理 RSS 可以使用的工具,包括集聚器、验证程序和解析器。
(责任编辑:城尘)