RSS 無處不在!
今天,您可以發現成千上萬的 RSS 提要。Weblog 用戶、新聞出版商、政府代理以及許多個人和商業 Web 站點都支持這種格式。Java 技術、PERL、PHP、Python 和其他主要編程語言,都爲開發人員提供了處理 RSS 的工具。許多閱讀器和聚集器都工作在 Web、桌面甚至 e-mail 客戶程序中。RSS 已成爲 Internet 上連鎖內容和元數據事實上的標準。
什麼是 RSS?
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。
一種流行的新聞閱讀器是 BlogExpress:
圖 1. 在 BlogExpress 中查看 alphaWorks
BlogExpress 是所謂的“匹薩軟件”—— 意思是說,如果您喜歡這個軟件,您可以寄給作者一些買匹薩餅的錢。
定製頻道
在 BlogExpress 中增加一個頻道很容易。比方說,您對追蹤 IBM alphaWorks 站點上的活動感興趣。您要做的第一件事是,取一個要增加的提要:
增加一個提要很容易,桔黃色的“XML”標誌常用於鏈接公共 RSS 提要。在多數 Web 瀏覽器中,您都可以右擊“XML”標誌複製鏈接並粘貼到您的新聞閱讀器中。
其他常見的新聞閱讀器包括 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">
中。這是一個非常基本的例子,說明了項和圖像如何包含在頻道中。所示的元素都是最常用的頻道子元素。
|
相關工具
由於 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”元素。爲此,我增加如下的名稱空間:
|
這就創建了一個名爲“ebusiness”的名稱空間,並表明這個名稱空間的文檔在我的站點上。爲了使用 <analog>
標籤,我可以使用這種格式:<ebusiness:analog>
。這樣就能與其他類似的含義中區分開來,比如 <sciencefiction:analog>
或 <synthesizers:analog>
。
關於擴展性,一個更實際的例子可以在 RSS 2.0 規範的示例文件中找到:
|
在這個例子中,定義了一個稱爲 blogChannel
的名稱空間。它指向一個文檔,該文檔解釋了幾種常見於 weblog 的新元素的用法。其中之一是 <blogroll>
。文檔說明,blogroll 是 weblog 中的一個鏈接集合,指向與您的 weblog 內容相關的站點。
<blogChannel:blogRoll>
標籤提供了用戶或軟件所需要的信息,知道 blogRoll
是一個定義在 blogChannel
名稱空間中的元素,而且可以找到這個文檔的位置。
同樣,RSS 2.0 只對不 屬於規範的元素要求名稱空間。所有的基本標籤都假定在 RSS 2.0 名稱空間中。這使得這種格式更容易使用,因爲除非需要擴展 RSS,否則您完全不需要知道名稱空間。
結束語
本文考察了 RSS 在內容連鎖和聚合領域的重要性。文章主要討論 RSS 2.0,因爲這是最新的規範版本,而且正在迅速普及。本文也考察了處理 RSS 可以使用的工具,包括集聚器、驗證程序和解析器。更多信息請參閱參考資料。