RSS协议简介
RSS是在线共享内容的一种简易方式(也叫聚合内容),通常在时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。
本文是RSS文件格式的简要介绍。
RSS 2.0 概述
那么RSS究竟代表什么呢?比较普遍的有两种说法,一种是“Rich Site Summary”或“RDF Site Summary”,另一种是“Really Simple Syndication”,之所以有这些分歧,需要从RSS发展的历史说起。
最初的0.90版本RSS是由Netscape公司设计的,目的是用来建立一个整合了各主要新闻站点内容的门户,但是0.90版本的RSS规范过于复杂,而一个简化的RSS 0.91版本也随着Netscape公司对该项目的放弃而于2000年暂停。
不久,一家专门从事博客写作软件开发的公司UserLand接手了RSS 0.91版本的发展,并把它作为其博客写作软件的基础功能之一继续开发,逐步推出了0.92、0.93和0.94版本。随着网络博客的流行,RSS作为一种基本的功能也被越来越多的网站和博客软件支持。
在 UserLand公司接手并不断开发RSS的同时,很多的专业人士认识到需要通过一个第三方、非商业的组织,把RSS发展成为一个通用的规范,并进一步标准化。于是2001年一个联合小组在0.90版本RSS的开发原则下,以W3C新一代的语义网技术RDF(Resource Description Framework)为基础,对RSS进行了重新定义,发布RSS1.0,并将RSS定义为“RDF Site Summary”。但是这项工作没有与UserLand公司进行有效的沟通,UserLand公司也不承认RSS 1.0的有效性,并坚持按照自己的设想进一步开发出RSS的后续版本,到2002年9月发布了最新版本RSS 2.0,UserLand公司将RSS定义为“Really Simple Syndication”。
目前RSS已经分化为RSS 0.9x/2.0和RSS 1.0两个阵营,由于分歧的存在和RSS 0.9x/2.0的广泛应用现状,RSS 1.0还没有成为标准化组织的真正标准。
RSS 文件形式
先看一个RSS样例文件:
-
-
<?xml version="1.0"?>
-
<rss version="2.0">
-
<!– 以下为频道信息及新闻列表 –>
-
<channel>
-
<!– 频道总体信息:开始 –>
-
<!– 频道标题 –>
-
<title>Lift Off News</title>
-
<!– 频道链接的总地址 –>
-
<link>http://liftoff.msfc.nasa.gov/</link>
-
<!– 频道描述文字 –>
-
<description>Liftoff to Space Exploration.</description>
-
<!– 频道使用的语言(zh-cn表示简体中文) –>
-
<language>en-us</language>
-
<!– 频道发布的时间 –>
-
<pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>
-
<!– 频道最后更新的时间–>
-
<lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>
-
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
-
<!– 频道生成器 –>
-
<generator>Weblog Editor 2.0</generator>
-
<managingEditor>editor@example.com</managingEditor>
-
<webMaster>webmaster@example.com</webMaster>
-
<ttl>5</ttl>
-
<!– 频道总体信息:结束 –>
-
<!– 每条RSS新闻信息都包含在item节点中, –>
-
<item>
-
<!– 新闻标题 –>
-
<title>Star City</title>
-
<!– 新闻链接地址 –>
-
<link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>
-
<!– 新闻内容简要描述 –>
-
<description>How do Americans get ready to work with Russians aboard the
-
International Space Station? They take a crash course in culture, language
-
and protocol at Russia’s Star City.</description>
-
<!– 新闻发布时间 –>
-
<pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>
-
<!– 新闻目录 –>
-
<category>IT</category>
-
<!– 新闻作者 –>
-
<author>bill</author>
-
<guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>
-
</item>
-
<item>
-
<title>Space Exploration</title>
-
<link>http://liftoff.msfc.nasa.gov/</link>
-
<description>Sky watchers in Europe, Asia, and parts of Alaska and Canada
-
will experience a partial eclipse of the Sun on Saturday, May 31st.</description>
-
<pubDate>Fri, 30 May 2003 11:06:42 GMT</pubDate>
-
<guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid>
-
</item>
-
<item>
-
<title>The Engine That Does More</title>
-
<link>http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp</link>
-
<description>Before man travels to Mars, NASA hopes to design new engines
-
that will let us fly through the Solar System more quickly. The proposed
-
VASIMR engine would do that.</description>
-
<pubDate>Tue, 27 May 2003 08:37:32 GMT</pubDate>
-
<guid>http://www.zhanghangfeng.cn/rss.xml</guid>
-
</item>
-
<item>
-
<title>Astronauts’ Dirty Laundry</title>
-
<link>http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp</link>
-
<description>Compared to earlier spacecraft, the International Space
-
Station has many luxuries, but laundry facilities are not one of them.
-
Instead, astronauts have other options.</description>
-
<pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>
-
<guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>
-
</item>
-
</channel>
-
</rss>
-
RSS 文件由一个 channel 元素及其子元素组成。除了频道内容本身之外,channel 还以item的形式包含表示频道元数据的元素 —— 比如 title、link 和 description。
频道<channel>
频道一般有三个元素,提供关于频道本身的信息:
- <title>:频道或提要的名称。
- <link>:与该频道关联的 Web 站点或者站点区域的 URL。
- <description>:简要介绍该频道是做什么的。
许多频道子元素都是可选的。常用的 <image> 元素包含三个必需的子元素:
- <url>:表示该频道的 GIF、JPEG 或 PNG 图像的 URL。
- <title>:图象的描述。当频道以 HTML 呈现时,用作 HTML
标签的 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>:告诉聚集器那一天的更新可以忽略。
项<itml>
项通常是提要中最重要的部分。每个项都可以关于某个 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 频道,当把项聚合在一起时非常有用。
项还有其他一些可选的元素: