連鎖成為主流
James Lewin
(jim@lewingroup.com)
總裁, The Lewin Group
2004 年 1 月
自從 developerWorks 上一次考察 RSS 以來,RSS 世界已經發生了很大變化:出現了兩種新的規范,RSS 已成為最流行的 XML 標準之一,涌現出了大量的工具和提要(feed)。RSS 為 weblog 的迅速崛起做出了貢獻,并且正在成為其他 Web 站點的標準部分。本文回顧 RSS 2.0,考察了 RSS 的新發展,幫助您迅速理解這種重要的格式。
自從我上一次為 developerWorks 撰寫關于 RSS 的文章以來,“An introduction to RSS news feeds”,時間已經過去了三年。當時,RSS 是比較流行的 XML 應用之一。后來,Netscape 放棄了這種格式,出現了 5 種(都算上有 5 種)新版本的 RSS 規范,關于這種格式還存在嚴重的分歧。
盡管存在這些缺陷,RSS 還是得到了前所未有的普及。
RSS 無處不在!
今天,您可以發現成千上萬的 RSS 提要。Weblog 用戶、新聞出版商、政府代理以及許多個人和商業 Web 站點都支持這種格式。Java 技術、PERL、PHP、Python 和其他主要編程語言,都為開發人員提供了處理 RSS 的工具。許多閱讀器和聚集器都工作在 Web、桌面甚至 e-mail 客戶程序中。RSS 已成為 Internet 上連鎖內容和元數據事實上的標準。
本文將觀察現行的 RSS 2.0 規范。我不準備討論格式上豐富多彩的特征以及圍繞它的爭論,否則就無法討論其他內容了。
相反,本文將為您提供少量背景知識,考察這種格式的用法,并列出一些比較流行的處理這種格式的工具。文中將討論這種格式的具體細節,給您一些例子,并說明在開始之前您需要了解哪些東西。最后,本文將涉及到 RSS 2.0 的一些新特性。在文章的最后,您將找到豐富的礦藏 —— 一份長長的、帶有注釋的 RSS 參考資料列表。
“RSS”究竟代表什么?
這要看您問的是誰!
和許多標準一樣,即使最基本的方面也很難讓人們達成一致。有人說它表示 “RDF Site Summary(RDF 站點摘要)”,其他人則說是“Really Simple Syndication(真正簡單的連鎖)”,還有人相信它代表 “Rich Site Summary(豐富站點摘要)”。
根據 Dave Winer(他是現行規范的作者)的觀點,“關于 RSS 代表什么沒有一致的看法,它不是一個首字母縮寫詞,而是一個名稱。規范的最新版本可能稱它是縮寫詞,但愿不會影響到太多應用程序?!?/p>
無論如何,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 站點上的活動感興趣。您要做的第一件事是,取一個要增加的提要:
圖 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 提要。升級后的規范增加了少量元素,比如
和
。
它也去掉了一些限制。在過去,
和
元素只能是 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 文件由一個
元素及其子元素組成。除了頻道內容本身之外,
還以項的形式包含表示頻道元數據的元素 —— 比如 http://www.urlofthechannel.com/This channel is an example channel for an article. en-us
http://www.urlofthechannel.com/images/logo.gifhttp://www.urlofthechannel.com/- http://www.itworld.com/nl/ecom_in_act/11122003/The issue of people distributing and reusing digital media is a problem for many businesses. It may also be a hidden opportunity. Just as open source licensing has opened up new possibilities in the world of technology, it promises to do the same in the area of creative content.
- http://www.itworld.com/nl/ecom_in_act/08202003/More people than ever are downloading music from the Internet. Many use person-to-person file sharing programs like Kazaa to share and download music in MP3 format, paying nothing. This has made it difficult for companies to setup online music businesses. How can companies compete against free?
相關工具
由于 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 提要可以包含本頁中沒有描述的元素,只要這些元素定義在一個名稱空間中?!?/p>
這就留下了很大的想像空間!所幸的是,規范中包含一個例子,您可以參考目前使用的幾個例子。
基本的思想是您可以增加需要的標簽 —— 但是,增加帶有多種含義的元素太容易了。使用您的頻道的人們可能并不知道某個標簽是什么含義。比如,如果我要在一個頻道中使用
標簽,它的含義就不很清楚。Web 專家可能認為這個標簽指的是 Analog,它是最流行的 Web log 文件分析器??苹妹钥赡苷J為這個標簽是關于 Analog 的,一本經典的科幻雜志。音樂家可能認為它指的是流行的合成器類型,生物學家認為這是一種器官,電子工程師認為是一種電路。含糊性使人們很難理解標簽的含義。
因此,RSS 允許您增加所喜歡的任何標簽,但是要求必須和名稱空間一起使用。這樣有助于澄清標簽的含義。
再回到
的例子,我可能希望創建一組關于電子商務的標簽,并讓
標簽作為一個“e-business”元素。為此,我增加如下的名稱空間:
xmlns:ebusiness="http://www.lewingroup.com/ebusinessChannel"
|
這就創建了一個名為“ebusiness”的名稱空間,并表明這個名稱空間的文檔在我的站點上。為了使用
標簽,我可以使用這種格式:
。這樣就能與其他類似的含義中區分開來,比如
或
。
關于擴展性,一個更實際的例子可以在 RSS 2.0 規范的示例文件中找到:
清單 2. RSS 2.0 規范示例文件中的名稱空間
http://www.scripting.com/A weblog about scripting and stuff like that.en-us
http://radio.weblogs.com/0001015/userland/scriptingNewsLeftLinks.opml
- Joshua Allen:
Who loves namespaces?Sun, 29 Sep 2002 19:59:01 GMT
http://scriptingnews.userland.com/backissues/2002/09/29#When:12:59:01PM
|
在這個例子中,定義了一個稱為 blogChannel
的名稱空間。它指向一個文檔,該文檔解釋了幾種常見于 weblog 的新元素的用法。其中之一是
。文檔說明,blogroll 是 weblog 中的一個鏈接集合,指向與您的 weblog 內容相關的站點。
標簽提供了用戶或軟件所需要的信息,知道 blogRoll
是一個定義在 blogChannel
名稱空間中的元素,而且可以找到這個文檔的位置。
同樣,RSS 2.0 只對不 屬于規范的元素要求名稱空間。所有的基本標簽都假定在 RSS 2.0 名稱空間中。這使得這種格式更容易使用,因為除非需要擴展 RSS,否則您完全不需要知道名稱空間。
結束語
本文考察了 RSS 在內容連鎖和聚合領域的重要性。文章主要討論 RSS 2.0,因為這是最新的規范版本,而且正在迅速普及。本文也考察了處理 RSS 可以使用的工具,包括集聚器、驗證程序和解析器。更多信息請參閱參考資料。
參考資料
提要展示:
一些主流提要資源:
在這個例子中,定義了一個稱為 blogChannel
的名稱空間。它指向一個文檔,該文檔解釋了幾種常見于 weblog 的新元素的用法。其中之一是
。文檔說明,blogroll 是 weblog 中的一個鏈接集合,指向與您的 weblog 內容相關的站點。
標簽提供了用戶或軟件所需要的信息,知道 blogRoll
是一個定義在 blogChannel
名稱空間中的元素,而且可以找到這個文檔的位置。
同樣,RSS 2.0 只對不 屬于規范的元素要求名稱空間。所有的基本標簽都假定在 RSS 2.0 名稱空間中。這使得這種格式更容易使用,因為除非需要擴展 RSS,否則您完全不需要知道名稱空間。
結束語
本文考察了 RSS 在內容連鎖和聚合領域的重要性。文章主要討論 RSS 2.0,因為這是最新的規范版本,而且正在迅速普及。本文也考察了處理 RSS 可以使用的工具,包括集聚器、驗證程序和解析器。更多信息請參閱參考資料。
參考資料
提要展示:
一些主流提要資源: