扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
自从我上一次为 developerWorks 撰写关于 RSS 的文章以来,“An introduction to RSS news feeds”,时间已经过去了三年。当时,RSS 是比较流行的 XML 应用之一。后来,Netscape 放弃了这种格式,出现了 5 种(都算上有 5 种)新版本的 RSS 规范,关于这种格式还存在严重的分歧。
尽管存在这些缺陷,RSS 还是得到了前所未有的普及。
RSS 无处不在!
今天,您可以发现成千上万的 RSS 提要。Weblog 用户、新闻出版商、政府代理以及许多个人和商业 Web 站点都支持这种格式。Java 技术、PERL、PHP、Python 和其他主要编程语言,都为开发人员提供了处理 RSS 的工具。许多阅读器和聚集器都工作在 Web、桌面甚至 e-mail 客户程序中。RSS 已成为 Internet 上连锁内容和元数据事实上的标准。
本文将观察现行的 RSS 2.0 规范。我不准备讨论格式上丰富多彩的特征以及围绕它的争论,否则就无法讨论其他内容了。
相反,本文将为您提供少量背景知识,考察这种格式的用法,并列出一些比较流行的处理这种格式的工具。文中将讨论这种格式的具体细节,给您一些例子,并说明在开始之前您需要了解哪些东西。最后,本文将涉及到 RSS 2.0 的一些新特性。在文章的最后,您将找到丰富的矿藏 —— 一份长长的、带有注释的 RSS 参考资料列表。
“RSS”究竟代表什么? 和许多标准一样,即使最基本的方面也很难让人们达成一致。有人说它表示 “RDF Site Summary(RDF 站点摘要)”,其他人则说是“Really Simple Syndication(真正简单的连锁)”,还有人相信它代表 “Rich Site Summary(丰富站点摘要)”。 根据 Dave Winer(他是现行规范的作者)的观点,“关于 RSS 代表什么没有一致的看法,它不是一个首字母缩写词,而是一个名称。规范的最新版本可能称它是缩写词,但愿不会影响到太多应用程序。” 无论如何,RSS 都代表一件事 —— 在 Internet 上连锁内容的一种格式。 |
什么是 RSS?
RSS 是 Internet 上连锁内容和元数据的一种格式。通常用于共享标题和到新闻文章的链接。对于新闻文章,真正的文章不一定是共享的,但是关于文章的元数据通常是共享的;这种元数据可以包含标题、URL或者摘要。对于出版商而言,RSS 是一种重要的工具,因为提要可用于连锁内容,并把第三方的内容集成到您的站点中。
RSS 是一种 XML 方言。所有的 RSS 文件必须符合万维网联盟(World Wide Web Consortium,W3C)Web 站点上发布的 XML 1.0 规范。
下面是一个典型的例子,说明了如何使用 RSS:
尽管标题连锁是最常见的 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 提要来源之列。
developerWorks RSS 提要 |
新闻阅读器
随着新闻提要数量的增加,出现了一种新的软件类型:新闻阅读器。新闻阅读器是个人聚集器 —— 帮助您发现和组织感兴趣的频道列表。一旦选择了频道,您就可以使用阅读器一致的界面查看这些频道。新闻阅读器检查您所感兴趣的频道的更新,并转化成可以浏览的 HTML。
一种流行的新闻阅读器是 BlogExpress:
图 1. 在 BlogExpress 中查看 alphaWorks
BlogExpress 是所谓的“匹萨软件”—— 意思是说,如果您喜欢这个软件,您可以寄给作者一些买匹萨饼的钱。
定制频道
在 BlogExpress 中增加一个频道很容易。比方说,您对追踪 IBM 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">
中。这是一个非常基本的例子,说明了项和图像如何包含在频道中。所示的元素都是最常用的频道子元素。
|
相关工具
由于 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,否则您完全不需要知道名称空间。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者