【轉載】RSS原理、建立及使用
最近需要接觸RSS Feed,知其然還要知其所以然。
很鬱悶的是Google Reader倒了才開始使用RSS閱讀,InoReader是一個不錯的替代。對於RSS的原理想要有個瞭解,但是網上的資料說得不是很清晰。有一篇CSDN的RSS原理和實現博文也不錯,在Wiki的Reference上也發現一篇不錯的文章。翻譯如下:
什麼是RSS?
RSS是一種共享訊息的格式規範,這種格式規範定義在XML 1.0版本中。你可以通過這種格式傳遞資訊給其他人,可以通過這種格式從各種來源接受訊息。一個網站所提供的資訊記錄在特定XML檔案中稱為RSS feed。
最近的瀏覽器可以直接閱讀RSS檔案,但需要使用一個特殊的RSS閱讀器或聚合器。
RSS歷史
RSS由網景公司在1999年開發。第一個版本為 RSS 0.90。2000年,UserLand公司改進發布了正式的 0.91 規範。
2000年,O'Reilly 開發出基於RDF的RSS 1.0 規範,由RSS-DEV團隊進一步維護,命名為RDF Site Summary。
2002年,Dave Winer(UserLand前員工)在哈佛大學開發出RSS 2.0.
該頁面是基於Really Simple Syndication,哈佛大學的2.01規範。(This page is based on the Really Simple Syndication, 2.01 specification from Harvard.此句不知如何翻譯,望有高人指點)。
為什麼使用RSS?
以計算機可以處理的特定格式來獲得網站提供的資訊或新聞。將獲得資訊或新聞展示在網頁上,或者供自己閱讀。
對於內容的提供者,RSS允許他傳送自己網站的資訊和新聞。
RSS如何工作?
RSS系統通過網路釋出文章和新聞的原理非常簡單:
1. 首先,我們有一些想要在其他網頁展示的頁面,這些頁面稱為RSS feed。
2. RSS feed由一個XML檔案定義,該XML檔案包括每個想要展示頁面的URL,標題和摘要。
3. 想要在自己電腦上閱讀RSS feed,只需使用RSS閱讀器或者瀏覽器,將這些feed新增到你的閱讀器中。
4. 其他接收者網站想要顯示 feed 須要從提供者處獲得RSS檔案,提取URL頁面,並顯示標題和摘要。這些工作可以通過PHP指令碼完成。
5. 當有人想要訪問接收者網站時,啟動指令碼,呼叫從提供者網站獲取的RSS檔案,抽取資訊從而顯示新聞列表
6. 通過點選新聞列表中的某一項,可以訪問該新聞提供者的原網頁。
RSS文件結構
RSS文件是一個XML檔案和一個通用的2.0規範的“RSS”標籤容器。
這個檔案擁有至少一個channel。內容為網站所提供的資訊。
channel提供一些文章和資料來自於相同或者不同的網站。
怎樣使用RSS?
1-在桌面應用中使用RSS
RSS feed 通過Internet Explorer 7 或 Firefox 2顯示。一個RSS閱讀器(或聚合器)也可以被安裝在作業系統中(Windows,Linux,Mac OS等等)。在參考資料中,有一個通過XUL構建。
獲取的內容取決於讀者,新增一個feed進列表,也許只需要點選“新增”按鈕來獲得RSS feed的URL。
2 -在網站中使用feed
RSS feed顯示為標題的列表(或者可選的摘要)。點選特定標題展示新聞內容。標題為自動更新。每當頁面載入RSS檔案並且從中抽取資料時,PHP或者其他語言指令碼建立新的列表並顯示在頁面上。在參考資料中提供了一些這類工具的連結。
怎樣通過RSS feed釋出新聞?
有幾種生成RSS feed的方法。
· 使用PHP的RSS庫。PHP指令碼能從標題和頁面內容的描述生成XML檔案。
· 使用特殊的工具從頁面抽取資訊。
給出一個XML檔案的訪問連結如右:
<a type="application/rss+xml" href="http://ww.xul.fr/rss.xml">
RSS feed for this site
</a>
feed在Atom格式下使用"application/atom+xml"代替。
用你網站的域名替換xul.fr。
名詞解釋
· Feed. "item"標籤的集合,資訊或者新聞的集合。
· RDF. 見本網站的RDF頁面
· Syndicated. Published through an RSS feed.
· Syndication. Publishing data by RSS feeds.
主要的RSS標籤
rss. 通用容器
channel. 分佈的頻道(A distributing channel)。它包含幾個描述性的標籤和一個或以上item。
<rss version="2.0">
<channel>
...
</channel>
</rss>
channel中必要的標籤
· title. channel的標題。應該包含名字。
· link. 提供該channel的網站URL。
· description. 提供者資訊的摘要。
· item. 至少需要一個item標籤,提供內容。
<rss version="2.0">
<channel>
<title>XUL</title>
<link>http://www.xul.fr</link>
<description></description>
<item>
...
</item>
</channel>
</rss>
channel中可選的標籤
· language. 文字中使用的自然語言(英語、漢語等)。
· docs. 提供檔案格式的文件的位置,可能是哈佛大學。
· webMaster. E-mail
· pubDate. 釋出時間。
· 等等。更多參加規範文件。
channel中的item
每個item標籤必須包含下列標籤:
· title. 文章的標題。
· link. 文章的連結。
· description. 文章的摘要。
<item>
<title>XUL news</title>
<link>http://www.xul.fr/index.php</link>
<description>... some text...</description>
</item>
一些可選的item標籤:
· pubDate. 釋出時間。
· guid. 指定item的唯一性的字串
· cate gory. 文章的分類
· 等等
按步建立個人RSS feed
首先,這僅僅是一個簡單的文字檔案,通過任何文字編輯器建立。但使用一個XML編輯器將會更加方便。(參見"software"頁面)。該檔名字可以是"feed.xml"。
整體結構如下:
<?xml version="1.0" ?>
<rss version="2.0">
<channel>
</channel>
1)通過channel標籤定義源
channel對於你的所有RSS feed將是一樣的。下列標籤是必須的:
-title:你網站的名稱,可能是你主頁的標題標籤內容。
-link:你網站的URL,例如:http://www.xul.fr
-description:你網站的描述,大約200個字元,可能是你主頁標題區域的description標籤的內容。
<channel>
<title>XUL and XML</title>
<link>http://www.xul.fr/en/</link>
<description>XML graphical interface etc...</description>
</channel>
2)新增影象
這是一個可選項。設計一個小的圖表(例如88x31),使用通用格式(gif, jpg, png)並且把它放在RSS檔案的同一個目錄下。
"image"標籤是channel標籤的子元素。
-url 是影象的地址
-link 是點選影象時連結的地址
<channel>
<title> </title>
<link> </link>
<image>
<url>http://www.xul.fr/xul.gif</url>
<link>http://www.xul.fr/en/index.php</link>
</image>
</channel>
3)新增新訊息
現在,我們將會新增一個網頁來顯示資訊。由"item"標籤實現,"item"標籤是channel的子元素和必要元件。
-title:文章的標題
-link:頁面的URL
-description:文章的摘要,大約200個字元
<item>
<title>News of today</title>
<link>http://www.xul.fr/en-xml-rss.html</link>
<description>All you need to know about RSS</description>
</item>
4)新增更多item
更多item可以被新增到這個channel
5)上傳檔案
將feed.xml檔案放到你的網站中,和其他網頁放在一起。
6)驗證檔案
7)使RSS可獲得
在主頁裡新增RSS按鈕。點選按鈕需要顯示你所創造的XML檔案
<a href="http://www.xul.fr/rss.xml">
<img src="rss.gif">
</a>
8)更新feed
你僅需要新增item標籤來發布更多的文章,刪除舊的item標籤來保持總文章數一定。
例子:完整的檔案
<?xml version="1.0" ?>
<rss version="2.0">
<channel>
<title>Ajax and XUL</title>
<link>http://www.xul.fr/en/</link>
<description>XML graphical interface etc...</description>
<image>
<url>http://www.xul.fr/xul-icon.gif</url>
<link>http://www.xul.fr/en/index.php</link>
</image>
<item>
<title>News of today</title>
<link>http://www.xul.fr/en-xml-rss.html</link>
<description>All you need to know about RSS</description>
</item>
<item>
<title>News of tomorrows</title>
<link>http://www.xul.fr/en-xml-rdf.html</link>
<description>And now, all about RDF</description>
</item>
</channel>
</rss>
你可以下載例子,並且使用它作為模板,記得用你網站的域名替換xul.fr。
瀏覽器怎麼知道網站上有RSS feed?
你已經建立了RSS feed,並且它現在儲存在你網站的根目錄下。當瀏覽器進入主頁時(或者其他你想要的頁面),你必須讓它知道這個檔案的存在和它的位置。 Firefox 會在URL區域顯示feed圖示,而 Internet Explorer會在控制欄顯示。
為了啟用它們,將下面的程式碼插入你網頁的原始碼中 <head> </head>部分的任意位置。
<link rel="alternate" type="application/rss+xml"
href="http://www.xul.fr/rss.xml" title="Your title">
用你網站的域名下的RSS feed檔案位置替換此URL。
如果檔案是atom格式,用atom+xml替換rss+xml
規範和工具
文件規範
生成並顯示RSS feed的工具
- Bioloide. PHP編寫的線上RSS生成器和編輯器
- RSS Reader. PHP函式用於在一個網頁上顯示本地或遠端的RSS feed。