“RSS”究竟代表什么?
和许多标准一样,即使最基本的方面也很难让人们达成一致。有人说它表示 “RDF Site Summary(RDF 站点摘要)”,其他人则说是“Really Simple Syndication(真正简单的连锁)”,还有人相信它代表 “Rich Site Summary(丰富站点摘要)”。
根据 Dave Winer(他是现行规范的作者)的观点,“关于 RSS 代表什么没有一致的看法,它不是一个首字母缩写词,而是一个名称。规范的最新版本可能称它是缩写词,但愿不会影响到太多应用程序。”
无论如何,RSS 都代表一件事 —— 在 Internet 上连锁内容的一种格式。
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。比较常见的新闻阅读器包括 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 文件
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
相关工具
由于 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”元素。为此,我增加如下的名称空间:
xmlns:ebusiness=" http://www.lewingroup.com/ebusinessChannel"
这就创建了一个名为“ebusiness”的名称空间,并表明这个名称空间的文档在我的站点上。为了使用 <analog> 标签,我可以使用这种格式:<ebusiness:analog>。这样就能与其他类似的含义中区分开来,比如 <sciencefiction:analog> 或 <synthesizers:analog>。
关于扩展性,一个更实际的例子可以在 RSS 2.0 规范的示例文件中找到:
清单 2. RSS 2.0 规范示例文件中的名称空间
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
在这个例子中,定义了一个称为 blogChannel 的名称空间。它指向一个文档,该文档解释了几种常见于 weblog 的新元素的用法。其中之一是 <blogroll>。文档说明,blogroll 是 weblog 中的一个链接集合,指向与您的 weblog 内容相关的站点。
<blogChannel:blogRoll> 标签提供了用户或软件所需要的信息,知道 blogRoll 是一个定义在 blogChannel 名称空间中的元素,而且可以找到这个文档的位置。
同样,RSS 2.0 只对不 属于规范的元素要求名称空间。所有的基本标签都假定在 RSS 2.0 名称空间中。这使得这种格式更容易使用,因为除非需要扩展 RSS,否则您完全不需要知道名称空间。
结束语
本文考察了 RSS 在内容连锁和聚合领域的重要性。文章主要讨论 RSS 2.0,因为这是最新的规范版本,而且正在迅速普及。本文也考察了处理 RSS 可以使用的工具,包括集聚器、验证程序和解析器。更多信息请参阅参考资料。
RSS2.0元素channel的子元素列表
|
RSS2.0元素channel的子元素image的子元素列表
|
RSS2.0元素channel的子元素cloud的子元素列表
|
RSS2.0元素channel的子元素textInput的子元素列表
|