關(guān)于RSS 2.0的規(guī)范實(shí)例
RSS的歷史
那么RSS究竟代表什么呢?比較普遍的有兩種說法,一種是“Rich Site Summary”或“RDF Site Summary”,另一種是“Really Simple Syndication”,之所以有這些分歧,需要從RSS發(fā)展的歷史說起。
最初的0.90版本RSS是由Netscape公司設(shè)計(jì)的,目的是用來建立一個(gè)整合了各主要新聞?wù)军c(diǎn)內(nèi)容的門戶,但是0.90版本的RSS規(guī)范過于復(fù)雜,而一個(gè)簡化的RSS 0.91版本也隨著Netscape公司對該項(xiàng)目的放棄而于2000年暫停。
不久,一家專門從事博客寫作軟件開發(fā)的公司UserLand接手了RSS 0.91版本的發(fā)展,并把它作為其博客寫作軟件的基礎(chǔ)功能之一繼續(xù)開發(fā),逐步推出了0.92、0.93和0.94版本。隨著網(wǎng)絡(luò)博客的流行,RSS作為一種基本的功能也被越來越多的網(wǎng)站和博客軟件支持。
在UserLand公司接手并不斷開發(fā)RSS的同時(shí),很多的專業(yè)人士認(rèn)識到需要通過一個(gè)第三方、非商業(yè)的組織,把RSS發(fā)展成為一個(gè)通用的規(guī)范,并進(jìn)一步標(biāo)準(zhǔn)化。于是2001年一個(gè)聯(lián)合小組在0.90版本RSS的開發(fā)原則下,以W3C新一代的語義網(wǎng)技術(shù)RDF(Resource Description Framework)為基礎(chǔ),對RSS進(jìn)行了重新定義,發(fā)布RSS1.0,并將RSS定義為“RDF Site Summary”。但是這項(xiàng)工作沒有與UserLand公司進(jìn)行有效的溝通,UserLand公司也不承認(rèn)RSS 1.0的有效性,并堅(jiān)持按照自己的設(shè)想進(jìn)一步開發(fā)出RSS的后續(xù)版本,到2002年9月發(fā)布了最新版本RSS 2.0,UserLand公司將RSS定義為“Really Simple Syndication”。
目前RSS已經(jīng)分化為RSS 0.9x/2.0和RSS 1.0兩個(gè)陣營,由于分歧的存在和RSS 0.9x/2.0的廣泛應(yīng)用現(xiàn)狀,RSS 1.0還沒有成為標(biāo)準(zhǔn)化組織的真正標(biāo)準(zhǔn)。
什么是RSS?
RSS是一種網(wǎng)頁內(nèi)容聯(lián)合格式(web content sydication format)。
它的名字是Really Simple Syndication的縮寫。
RSS是XML的一種。所有的RSS文檔都遵循XML 1.0規(guī)范,該規(guī)范發(fā)布在W3C網(wǎng)站上。
在一個(gè)RSS文檔的開頭是一個(gè)<rss>節(jié)點(diǎn)和一個(gè)規(guī)定的屬性version,該屬性規(guī)定了該文檔將以RSS的哪個(gè)版本表示。如果該文檔以這個(gè)規(guī)范來表示,那么它的version屬性就必須等于2.0。
在<rss>節(jié)點(diǎn)的下一級是一個(gè)獨(dú)立的<channel>節(jié)點(diǎn),該節(jié)點(diǎn)包含關(guān)于channel的信息和內(nèi)容。
關(guān)于本文檔
該文檔是在2002年秋天撰寫的,當(dāng)時(shí)的RSS版本為2.0.1。
它包含從RSS 0.91規(guī)范(2000年)開始的所有的修改和添加,以及包含在RSS 0.92(2000年12月)和RSS 0.94(2002年8月)中的新的特性。
必需的頻道節(jié)點(diǎn)
下面有一份必須包含的頻道(channel)節(jié)點(diǎn)的列表,每一個(gè)都有一個(gè)簡單的描述、一個(gè)例子、應(yīng)該出現(xiàn)的位置和更詳細(xì)描述的超鏈接。
元素 | 描述 | 范例 |
title | 頻道(channel)名稱。它可以告訴別人如何訪問你的服務(wù)。如果你有一個(gè)與你的RSS文件內(nèi)容一致的HTML網(wǎng)站,你的title元素值應(yīng)該與你的網(wǎng)站的標(biāo)題相同。 | GoUpstate.com News Headings |
link | 響應(yīng)該頻道的網(wǎng)站的URL | http://www.goupstate.com/ |
description | 關(guān)于該頻道的描述 | The latest news from GoUpstate.com, a Spartanburg Herald-Joural Web Site |
可選的頻道元素
下面是可選的頻道元素列表
節(jié)點(diǎn) | 描述 | 范例 |
language | 使用的語言。這允許聚合器對所有的意大利語站點(diǎn)分組。 | en-us |
copyright | 版權(quán)聲明 | Copyright 2002, Spartanburg Herald-Journal |
managingEditor | 內(nèi)容負(fù)責(zé)人的Email | geo@herald.com (George Matesky) |
webMaster | 技術(shù)人員的Email | betty@herald.com (Betty Guernsey) |
pubDate | 內(nèi)容的發(fā)布時(shí)間 | Sat, 07 Sep 2002 00:00:01 GMT |
lastBuildDate | 最后更新時(shí)間 | Sat, 07 Sep 2002 09:42:31 GMT |
category | 指定該頻道所屬的一個(gè)或多個(gè)分類。遵循與item級category元素相同的規(guī)則。 | <category>Newspapers</category> |
generator | 生成該頻道的程序名稱 | MightyInHouse Content System v2.3 |
docs | 指向rss格式文檔的url地址? | http://blogs.law.harvard.edu/tech/rss |
cloud | 允許所有進(jìn)程注冊一個(gè)cloud用于獲得頻道的更新通知,并為rss種子實(shí)現(xiàn)一個(gè)輕量級的發(fā)布訂閱協(xié)議。 | <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/> |
ttl | ttl是Time to live的縮寫。它指示cache的有效保存時(shí)間。 | <ttl>60</ttl> |
image | 與頻道一起顯示的圖片地址 | |
rating | 該頻道的統(tǒng)計(jì)圖片地址 | |
textInput | 指定一個(gè)textbox與該頻道一起顯示 | |
skipHours | 告訴使用者哪些時(shí)段是可以忽略的 | |
skipDays | 告訴使用著哪些天是可以忽略的 |
<channel>子節(jié)點(diǎn)<image>
<image>是一個(gè)可選的<channel>子節(jié)點(diǎn),該節(jié)點(diǎn)包含三個(gè)必需的子元素和三個(gè)可選的子元素。
<url>是GIF、JPEG或PNG圖像文件的URL地址,該圖像代表整個(gè)頻道
<title>用于描述上面的圖像,等同于HTML語言中的<img>的alt屬性
<link>是要連接的站點(diǎn)的url,當(dāng)顯示頻道時(shí),圖像的連接指向該站點(diǎn)。
<title>和<link>應(yīng)該與頻道的<title>和<link>有相同的值
可選的節(jié)點(diǎn)包括<width>和<height>,它們是數(shù)字類型,指定圖像的寬度和高度,單位為像素
<description>就是link的TITLE屬性中文本,它將在調(diào)用網(wǎng)頁時(shí)顯示出來。
圖像寬度的最大值為144,默認(rèn)值為88
圖像高度的最大值為400,默認(rèn)值為31
<channel>子節(jié)點(diǎn)<cloud>
<cloud>是一個(gè)可選的<channel>子節(jié)點(diǎn)。
它指定一個(gè)可以支持rssCloud接口的web服務(wù),rssCloud接口可以用HTTP-POST,XML-RPC或SOAP1.1實(shí)現(xiàn)。
它的目的是允許通知注冊為cloud的進(jìn)程頻道被更新,從而實(shí)現(xiàn)一個(gè)輕量級的發(fā)布訂閱協(xié)議。

<channel>子節(jié)點(diǎn)<ttl>
<ttl>是一個(gè)可選的<channel>子節(jié)點(diǎn)。
ttl是time to live的縮寫。它表示頻道在被刷新前應(yīng)該被緩存的時(shí)間。這使得rss源可以被一個(gè)支持文件共享的網(wǎng)絡(luò)所管理,例如Gnutella
例如:<ttl>60</ttl>
<channel>子節(jié)點(diǎn)<textInput>
<textInput>是<channel>的可選的子節(jié)點(diǎn),<textInput>包含四個(gè)子節(jié)點(diǎn)。
<title>--提交按鈕的標(biāo)簽
<description>--該文本輸入?yún)^(qū)的描述
<name>--文本輸入?yún)^(qū)的名稱
<link>--處理文本輸入的CGI腳本的URL
使用<textInput>的目的有些神秘(?)。你可以用它提供一個(gè)搜索引擎輸入框,或讓讀者提供反饋信息。許多聚合器忽略該節(jié)點(diǎn)。
<item>的節(jié)點(diǎn)
一個(gè)頻道可以包含許多項(xiàng)目(item)節(jié)點(diǎn)。一個(gè)項(xiàng)目可以代表一個(gè)故事——比如說一份報(bào)紙或雜志上的故事,如果是這樣的話,那么項(xiàng)目的描述則是故事的概要,項(xiàng)目的鏈接則指向整個(gè)故事的存放位置。項(xiàng)目的所有節(jié)點(diǎn)都是可選的,但是至少要包含至少一個(gè)標(biāo)題(title)和描述(description)。
節(jié)點(diǎn) | 描述 | 范例 |
title | item的標(biāo)題 | Venice Film Festival Tries to Quit Sinking |
link | item的URL | http://www.nytimes.com/2002/09/07/movies/07FEST.html |
description | item概要 | Some of the most heated chatter at the Venice Film Festival this week was about the way that the arrival of the stars at the Palazzo del Cinema was being staged. |
author | 作者的email地址 | oprah@oxygen.net |
category | item可以包含在一個(gè)或多個(gè)分類中 | Simpsons Characters |
comments | 與item相關(guān)的評論的地址 | http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290 |
enclosure | 附加的媒體對象 | |
guid | 可以唯一確定item的字符串 | http://inessential.com/2002/09/01.php#a2 |
pubDate | item發(fā)布的時(shí)間 | Sun, 19 May 2002 15:21:36 GMT |
source | rss頻道來源 | Quotes of the Day |
<item>子節(jié)點(diǎn)<source>
<source>是<item>的可選節(jié)點(diǎn)。
它的值是item來自的rss頻道的名稱,從item的title衍生而來。它有一個(gè)必須包含的屬性url, 該屬性鏈接到XML序列化源。

<item>子節(jié)點(diǎn)<enclosure>
<enclosure>是<item>的可選節(jié)點(diǎn)。
它有三個(gè)必要的屬性。url屬性指示enclosure的位置,length指出它的字節(jié)大小,type屬性指出它的標(biāo)準(zhǔn)MIME類型
url必須為一個(gè)http url。

<item>子節(jié)點(diǎn)<category>
<category>是<item>的可選節(jié)點(diǎn)。
它有一個(gè)可選屬性或域,該屬性是一個(gè)用來定義分類法的字符串。
該節(jié)點(diǎn)的值是一個(gè)正斜杠分割的字符串,它用來在指定的分類法中識別一個(gè)分級位置(hierarchic location)。處理器可以為分類的識別建立會(huì)話。(Processors may establish conventions for the interpretation of categories)下面有兩個(gè)例子:


<item>子節(jié)點(diǎn)<pubDate>
<pubDate>是<item>的可選節(jié)點(diǎn)。
它的值是item發(fā)布的日期。如果它是一個(gè)沒有到達(dá)的日期,聚合器在日期到達(dá)之前可以選擇不顯示該item。

<item>子節(jié)點(diǎn)<guid>
<guid>是<item>的可選節(jié)點(diǎn)。
guid是globally unique identifier的縮寫。它是一個(gè)可以唯一識別item的字符串。當(dāng)item發(fā)布之后,聚合器可以選擇使用該字符串判斷該item是否是新的。
<guid>http://some.server.com/weblogItem3207</guid>
guid沒有特定的語法規(guī)則,聚合器必須將他們看作一個(gè)字符串。生成具有唯一性的字符串guid取決于種子的源頭。
如果guid節(jié)點(diǎn)有isPermaLink屬性,并且值為真,讀取器就會(huì)認(rèn)為它是item的permalink。permalink是一個(gè)可在web瀏覽器中打開的url鏈接,它指向<item>節(jié)點(diǎn)所描述的全部item。
<guid isPermaLink="true">http://inessential.com/2002/09/01.php#a2</guid>
isPermaLink是可選屬性,默認(rèn)值為真。如果值為假,guid將不會(huì)被認(rèn)為是一個(gè)url或指向任何對象的url。
<item>子節(jié)點(diǎn)<comment>
<comment>是<item>的可選節(jié)點(diǎn)。
如果出現(xiàn),它指向該item評論的url
<comments>http://rateyourmusic.com/yaccs/commentsn/blogId=705245&itemId=271</comments>
<item>子節(jié)點(diǎn)<author>
<author>是<item>的可選節(jié)點(diǎn)。
它是item的作者的email。對于通過rss傳播的報(bào)紙和雜志,作者可能是寫該item所描述的文章的人。對于聚集型webblogs,作者可能不是責(zé)任編輯或站長。對于個(gè)人維護(hù)的webblog,忽略<author>節(jié)點(diǎn)是有意義的。
<author>lawyer@boyer.net (Lawyer Boyer)</author>