今天,您可以發現成千上萬的 RSS 提要。Weblog 用戶、新聞出版商、政府代理以及許多個人和商業 Web 站點都支持這種格式。Java 技術、PERL、PHP、Python 和其他主要編程語言,都為開發人員提供了處理 RSS 的工具。許多閱讀器和聚集器都工作在 Web、桌面甚至 e-mail 客戶程序中。RSS 已成為 Internet 上連鎖內容和元數據事實上的標準。
本文將觀察現行的 RSS 2.0 規范。我不準備討論格式上豐富多彩的特征以及圍繞它的爭論,否則就無法討論其他內容了。
相反,本文將為您提供少量背景知識,考察這種格式的用法,并列出一些比較流行的處理這種格式的工具。文中將討論這種格式的具體細節,給您一些例子,并說明在開始之前您需要了解哪些東西。最后,本文將涉及到 RSS 2.0 的一些新特性。在文章的最后,您將找到豐富的礦藏 —— 一份長長的、帶有注釋的 RSS 參考資料列表。
什么是 RSS?
RSS 是 Internet 上連鎖內容和元數據的一種格式。通常用于共享標題和到新聞文章的鏈接。對于新聞文章,真正的文章不一定是共享的,但是關于文章的元數據通常是共享的;這種元數據可以包含標題、URL或者摘要。對于出版商而言,RSS 是一種重要的工具,因為提要可用于連鎖內容,并把第三方的內容集成到您的站點中。
RSS 是一種 XML 方言。所有的 RSS 文件必須符合萬維網聯盟(World Wide Web Consortium,W3C)Web 站點上發布的 XML 1.0 規范。
下面是一個典型的例子,說明了如何使用 RSS:
盡管標題連鎖是最常見的 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站點上的活動感興趣。您要做的第一件事是,取一個要增加的提要:
圖 2. 在 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 的普及,出現了許多工具,使您能夠基本上在任何環境中使用這些文件:
此外,許多內容管理和 weblog 工具也直接支持 RSS。多數 weblog 工具,包括 Movable Type、Blogger 和 Radio Userland 都支持 RSS。一些內容管理系統,包括 Zope 和 CityDesk 現在也支持它了。
擴展 RSS
RSS 2.0 有許多可選元素,包括多數頻道都需要的那些元素。但是它還支持擴展性,因此您可以使用規范中沒有的元素。不過,RSS 2.0 規范并沒有花費多少時間定義如何實現擴展。關于擴展性,規范中總結為:“RSS 提要可以包含本頁中沒有描述的元素,只要這些元素定義在一個名稱空間中?!?/p>
這就留下了很大的想像空間!所幸的是,規范中包含一個例子,您可以參考目前使用的幾個例子。
基本的思想是您可以增加需要的標簽 —— 但是,增加帶有多種含義的元素太容易了。使用您的頻道的人們可能并不知道某個標簽是什么含義。比如,如果我要在一個頻道中使用 <analog>
標簽,它的含義就不很清楚。Web 專家可能認為這個標簽指的是 Analog,它是最流行的 Web log 文件分析器??苹妹钥赡苷J為這個標簽是關于 Analog 的,一本經典的科幻雜志。音樂家可能認為它指的是流行的合成器類型,生物學家認為這是一種器官,電子工程師認為是一種電路。含糊性使人們很難理解標簽的含義。
因此,RSS 允許您增加所喜歡的任何標簽,但是要求必須和名稱空間一起使用。這樣有助于澄清標簽的含義。
再回到 <analog>
的例子,我可能希望創建一組關于電子商務的標簽,并讓 <analog>
標簽作為一個“e-business”元素。為此,我增加如下的名稱空間:
|
這就創建了一個名為“ebusiness”的名稱空間,并表明這個名稱空間的文檔在我的站點上。為了使用 <analog>
標簽,我可以使用這種格式: <ebusiness:analog>
。這樣就能與其他類似的含義中區分開來,比如 <sciencefiction:analog>
或 <synthesizers:analog>
。
關于擴展性,一個更實際的例子可以在 RSS 2.0 規范的示例文件中找到:
清單 2. 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 可以使用的工具,包括集聚器、驗證程序和解析器。
(責任編輯:城塵)