RSS介绍、RSS 2.0规范说明和示例代码

RSS是一种消息来源格式规范,用以发布经常更新资料的网站,例如博客、新闻的网摘。RSS文件,又称做摘要、网摘、更新、频道等,包含了全文或节选文字,再加上一定的属性数据。RSS让发布者自动发布信息,也使读者能够聚合和定期更新不同网站的网摘。RSS可以通过以网页或桌面为架构的软件来阅读,即RSS阅读器、新闻聚合器等,并进行定期更新检查、自动下载。

RSS可以是以下三种解释中任一种的缩写,

  • Really Simple Syndication
  • RDF (Resource Description Framework) Site Summary
  • Rich Site Summary

RSS规范的主要版本有0.91、1.0和2.0等。

  • 1.0版和0.91版内容不同、风格不同、制定标准的人也不同,称为RDF分支;
  • 2.0版和0.91版一脉相承,称为2.*分支。

早期版本的RSS阅读器不支持RDF分支,而当前主流的RSS阅读器都同时兼容两种分支。

RSS 2.*规范由美国人Dave Winer个人进行维护,在全球大部分网站得到使用。可能是版权方面的原因,RSS 2.*规范并没有在W3C、IETF或者ISO等国际标准化组织发布,而是在RSS Advisory Board发布。

RSS 2.0规范说明

RSS标志

本规范是RSS 2.0规范的2.0.10版本,2007-10-15在RSS Advisory Board发布,波波坡原创翻译。点击这个链接可以获得RSS的最新版本的英语规范。

RSS是一个Xml格式的数据或文件,根节点是一个带有版本号的节点,根节点一下是一个单一的节点极其子节点。对于具体的Rss订阅项目,例如一篇文章、网志,由节点下多个节点来表示。一个可以有任意多个

必须的子节点:

项目 说明 举例
</strong></td> <td>频道名称。</td> <td>程序员的波波坡。</td> </tr> <tr> <td><strong><link></strong></td> <td>与频道关联的Web站点或者站点区域的Url。</td> <td>http://www.bobopo.com</td> </tr> <tr> <td><strong><description></strong></td> <td>简要介绍该频道是做什么的。</td> <td>包含编程、休闲、知识、杂记的程序员站点。</td> </tr> </tbody> </table> </div> <p>可选的子节点:</p> <div class="table"> <table> <tbody> <tr> <th>项目</th> <th>说明</th> <th>举例</th> </tr> <tr> <td><strong><language></strong></td> <td>频道内容使用的语言。详见常用HTML、RSS语言代码列表。</td> <td>zh-cn</td> </tr> <tr> <td><strong><copyright></strong></td> <td>频道内容的版权说明。</td> <td>Copyright 2008,2009 bobopo.com</td> </tr> <tr> <td><strong><managingEditor></strong></td> <td>责任编辑的Email地址。</td> <td>rosbicn@hotmail.com</td> </tr> <tr> <td><strong><webMaster></strong></td> <td>频道相关网站管理员的Email地址。</td> <td>rosbicn@hotmail.com</td> </tr> <tr> <td><strong><pubDate></strong></td> <td>频道内容发布日期。遵循RFC 822。</td> <td>Wed, 04 Mar 2009 00:00:01 GMT</td> </tr> <tr> <td><strong><lastBuildDate></strong></td> <td>频道内容最后的修改日期。遵循RFC 822。</td> <td>Wed, 04 Mar 2009 09:42:31 GMT</td> </tr> <tr> <td><strong><category></strong></td> <td>频道所属的一个或几个类别。详见后文。</td> <td>Html</td> </tr> <tr> <td><strong><generator></strong></td> <td>生成该频道的程序名字符串。</td> <td>Bobopo Site Generator 2009</td> </tr> <tr> <td><strong><docs></strong></td> <td>解释当前RSS文件的文档的Url。(给不知道啥是RSS的某人看:)</td> <td>http://www.bobopo.com/code/rss.htm</td> </tr> <tr> <td><strong><cloud></strong></td> <td>允许进程注册为“cloud”,频道更新时通知它,为 RSS 提要实现了一种轻量级的发布-订阅协议。详见后文。</td> <td>详见后文。</td> </tr> <tr> <td><strong><ttl></strong></td> <td>内容有效期,一个数字,指明该频道可被缓存的最长分钟数。</td> <td>60</td> </tr> <tr> <td><strong><image></strong></td> <td>指定一个 GIF或JPEG或PNG图片,用以与频道一起显示。详见后文。</td> <td>详见后文。</td> </tr> <tr> <td><strong><rating></strong></td> <td>內容分级,主要指成人、限制、儿童等,多数情况不用,如果要用参见PICS。</td> <td> </td> </tr> <tr> <td><strong><textInput></strong></td> <td>定义可与频道一起显示的输入框。多数情况不用。详见后文。</td> <td> </td> </tr> <tr> <td><strong><skipHours></strong></td> <td>提示新闻聚合器,哪些小时时段它可以跳过。可包含最多24个<hour>子节点,它的值是0~23中的一个数字。</td> <td><hour>2</hour><br><hour>3</hour></td> </tr> <tr> <td><strong><skipDays></strong></td> <td>提示新闻聚合器,那些天它可以跳过。可包含最多7个<day>子节点,它的值是Monday、Tuesday、Wednesday、Thursday、Friday、Saturday或Sunday之一。</td> <td><day>Saturday</day><br><day>Sunday</day></td> </tr> </tbody> </table> </div> <h2><item></h2> <p><item>的任何一个子节点都是可选的,但是<title>和<description>至少要被包含一个。</p> <div class="table"> <table> <tbody> <tr> <th>项目</th> <th>说明</th> <th>举例</th> </tr> <tr> <td><strong><title></strong></td> <td>项目的名称。</td> <td>RSS简介。</td> </tr> <tr> <td><strong><link></strong></td> <td>项目的Url。</td> <td>http://www.bobopo.com/article/rss.htm</td> </tr> <tr> <td><strong><description></strong></td> <td>项目的摘要。</td> <td>RSS(简易资讯聚合)是一种消息来源格式规范,用以发布经常更新资料的网站,例如部落格文章、新闻、音讯或视讯的网摘。RSS文件(或称做摘要、网络摘要、或频更新,提供到能道)包含了全文或是节录的文字,……</td> </tr> <tr> <td><strong><author></strong></td> <td>作者的Email地址。通常忽略。</td> <td>rosbicn@hotmail.com</td> </tr> <tr> <td><strong><category></strong></td> <td>频道所属的一个或几个类别。详见后文。</td> <td>Html</td> </tr> <tr> <td><strong><comments></strong></td> <td>与此项目相关的评论的Url。</td> <td>http://www.bobopo.com/comments/rss.htm</td> </tr> <tr> <td><strong><enclosure></strong></td> <td>此项目相关的多媒体附件。属性url表示附件网址,属性length表示附件字节数,属性type表示附件的MIME类型。</td> <td><enclosure url="http://www.bobopo.com/video/rss.mp3" length="16131450" type="audio/mpeg" /></td> </tr> <tr> <td><strong><guid></strong></td> <td>项目的唯一识别码。详见后文。</td> <td>http://www.bobopo.com/article/rss.htm</td> </tr> <tr> <td><strong><pubDate></strong></td> <td>项目的发布日期。遵循RFC 822。</td> <td>Wed, 04 Mar 2009 00:00:01 GMT</td> </tr> <tr> <td><strong><source></strong></td> <td>项目来源于哪个Rss频道。如果一个Rss是从其他Rss转贴过来,可以用这个。必须包含属性url,指向另外一个rss。</td> <td><source url="http://www.blabla.cn/rss.xml">Blabla</source></td> </tr> </tbody> </table> </div> <h2><item>中支持Html格式的<description></h2> <p><item>的子节点<description>可以只包含项目的摘要,也可以是项目全文。它的值是Text类型,或者是一个实体编码的HTML类型(entity-encoded HTML)。所谓实体编码的HTML类型,指的是HTML的保留字(实体)都进行了编码处理。举例如下:</p> <p>示例1:对HTML标记进行编码。</p> <pre><description>this is <b>bold</b></description> </pre> <p>结果:this is <strong>bold</strong></p> <p>示例2:HTML标记放在CDATA段中编码。</p> <pre><description><![CDATA[this is <b>bold</b>]]></description> </pre> <p>结果:this is <strong>bold</strong></p> <p>示例3:对尖括号进行编码</p> <pre><description>5 &lt; 8, ticker symbol&lt;BIGCO&gt;</description></pre> <p>结果:5 < 8, ticker symbol <BIGCO></p> <p>示例4:尖括号放在CDATA段中编码。</p> <pre><description><![CDATA[5 < 8, ticker symbol <BIGCO>]]></description></pre> <p>结果:5 < 8, ticker symbol <BIGCO></p> <h2><category></h2> <p><category>是<channel>的可选子节点,也是<item>的可选子节点,用来表示频道或者内容的类别。一个节点表示一个类别,如果是多个类别,可以用多个<category>节点来表示。如果该类别有专门的Url表示,可以用属性domain来表示。</p> <p>示例如下,</p> <pre><category>编程</category><br><category domain="http://www.bobopo.com/html/">Html</category></pre> <p><category>有点类似很多网站中的标签(Tag)。</p> <h2><guid></h2> <p>guid是全球唯一识别码的意思,用来唯一确定Rss项目的字符串。现在,一个新闻聚合器往往用这个字符串来判断某个项目是不是新的。</p> <p>guid并没有什么语法上面的规定,新闻聚合器肯定把它视作字符串。建立这个字符串的唯一性取决于项目的内容。往往用项目相关的Url来做guid。</p> <p>如果<guid>包含属性isPermaLink,并且属性值是true,新闻聚合器会把<guid>的值当做当前项目的永久连接,也就是能够在浏览器中打开,连接到项目全文的Url。isPermaLink是可选属性,缺省值是true,也就是说,如果包含了isPermaLink,只有明确写明值是false,才表示<guid>的值不是Url。</p> <pre><guid isPermaLink="true">http://www.bobopo.com/article/rss.htm</guid></pre> <h2><cloud></h2> <p>这个东西主要是给HTTP-POST、XML-RPC或者SOAP 1.1这类的Web Service用的。如果真的要用,请看这里。</p> <div class="table"> <table> <tbody> <tr> <th>项目</th> <th>说明</th> <th>举例</th> </tr> <tr> <td><strong><domain></strong></td> <td>必须。cloud程序所在机器的域名或IP地址。</td> <td>rpc.bobopo.com</td> </tr> <tr> <td><strong><port></strong></td> <td>必须。访问cloud程序所通过的端口。</td> <td>80</td> </tr> <tr> <td><strong><path></strong></td> <td>必须。程序所在路径,不一定需要是真实路径。</td> <td>/RPC2</td> </tr> <tr> <td><strong><registerProcedure></strong></td> <td>必须。 注册的可提供的服务或过程。</td> <td>cloud.rss</td> </tr> <tr> <td><strong><protocol></strong></td> <td>必须。协议,http-post、xml-rpc、soap之一。</td> <td>xml-rpc</td> </tr> </tbody> </table> </div> <p>示例如下,</p> <pre><cloud domain="rpc.bobopo.com" port="80" path="/RPC2" registerProcedure="cloud.rss" protocol="xml-rpc" /></pre> <h2><image></h2> <div class="table"> <table> <tbody> <tr> <th>项目</th> <th>说明</th> <th>举例</th> </tr> <tr> <td><strong><url></strong></td> <td>必须。表示该频道的Gif、Jpeg或Png图像的Url。</td> <td>http://www.bobopo.com/style/images/bobopo.gif</td> </tr> <tr> <td><strong><title></strong></td> <td>必须。图象描述。当频道以Html呈现时用作<img>标签的alt属性。</td> <td>程序员的波波坡。</td> </tr> <tr> <td><strong><link></strong></td> <td>必须。站点Url,当频道以Html呈现时,该图像会链接到此。</td> <td>http://www.bobopo.com</td> </tr> <tr> <td><strong><width></strong></td> <td>可选。 数字,图象的像素宽度,最大值144,默认值为88。</td> <td>120</td> </tr> <tr> <td><strong><height></strong></td> <td>可选。 数字,图象的像素高度,最大值400,默认值为31。</td> <td>120</td> </tr> <tr> <td><strong><description></strong></td> <td>可选。 当频道以Html呈现时,作为围绕着该图像形成的链接Tag的title属性。</td> <td>包含编程、休闲、知识、杂记的程序员站点。</td> </tr> </tbody> </table> </div> <p>上述<title>和<link>多数情况下会与<channal>的<title>和<link>相同。</p> <h2><textInput></h2> <p>用户可以用<textInput>让读者进行一次搜索引擎的搜索,或者提交一个反馈。不过大多数情况都是忽略这个东西。</p> <div class="table"> <table> <tbody> <tr> <th>项目</th> <th>说明</th> </tr> <tr> <td><strong><title></strong></td> <td>必须。输入框中Submit按钮上的文字。</td> </tr> <tr> <td><strong><description></strong></td> <td>必须。输入框的解释。</td> </tr> <tr> <td><strong><name></strong></td> <td>必须。输入框对象的名字。</td> </tr> <tr> <td><strong><link></strong></td> <td>可选。 输入框提交的Url。</td> </tr> </tbody> </table> </div> <h1>RSS 2.0代码示<?xml version="1.0"?><rss version="2.0"></h1> <pre><em id="__mceDel"><em> <channel><br> <title>Liftoff News
http://liftoff.msfc.nasa.gov/
Liftoff to Space Exploration.
en-us
Tue, 10 Jun 2003 04:00:00 GMT
Tue, 10 Jun 2003 09:41:01 GMT
http://blogs.law.harvard.edu/tech/rss
Weblog Editor 2.0
[email protected]
[email protected]

Star City
http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp
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 <a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm">Star City</a>.
Tue, 03 Jun 2003 09:39:21 GMT
http://liftoff.msfc.nasa.gov/2003/06/03.html#item573


Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a <a href="http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm">partial eclipse of the Sun</a> on Saturday, May 31st.
Fri, 30 May 2003 11:06:42 GMT
http://liftoff.msfc.nasa.gov/2003/05/30.html#item572


The Engine That Does More
http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp
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.
Tue, 27 May 2003 08:37:32 GMT
http://liftoff.msfc.nasa.gov/2003/05/27.html#item571


Astronauts' Dirty Laundry
http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp
Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options.
Tue, 20 May 2003 08:56:02 GMT
http://liftoff.msfc.nasa.gov/2003/05/20.html#item570





我的另一篇博文有讲怎么用C# 3.5、4.0来生成和解析rss 详见:用C#实现RSS的生成和解析,支持RSS2.0和Atom格式

 

你可能感兴趣的:(RSS介绍、RSS 2.0规范说明和示例代码)