RSS 2.0內容提要

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 中查看 alphaWorks

BlogExpress 是所謂的“匹薩軟件”—— 意思是說,如果您喜歡這個軟件,您可以寄給作者一些買匹薩餅的錢。

定製頻道
在 BlogExpress 中增加一個頻道很容易。比方說,您對追蹤 IBM alphaWorks 站點上的活動感興趣。您要做的第一件事是,取一個要增加的提要:

圖 2. 在 alphaWorks 找到的新聞提要
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"> 中。這是一個非常基本的例子,說明了項和圖像如何包含在頻道中。所示的元素都是最常用的頻道子元素。

清單 1. 示例 RSS 2.0 文件


<?xml version="1.0"?>
<rss version="2.0">
    <channel>
    <title>The channel's name goes here</title>
    <link>http://www.urlofthechannel.com/</link>
    <description>This channel is an example channel for an article.
    </description>
    <language>en-us</language>
    <image>
      <title>The image title goes here</title>
      <url>http://www.urlofthechannel.com/images/logo.gif</url>
      <link>http://www.urlofthechannel.com/</link>
    </image>
    <item>
      <title>The Future of content</title>
      <link>http://www.itworld.com/nl/ecom_in_act/11122003/</link>
      <description> 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.</description>
    </item>
    <item>
      <title>Online Music Services - Better than free?</title>
      <link>http://www.itworld.com/nl/ecom_in_act/08202003/</link>
      <description>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?</description>
    </item>
  </channel>
</rss>

相關工具
由於 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”元素。爲此,我增加如下的名稱空間:

xmlns:ebusiness="http://www.lewingroup.com/ebusinessChannel"

這就創建了一個名爲“ebusiness”的名稱空間,並表明這個名稱空間的文檔在我的站點上。爲了使用 <analog> 標籤,我可以使用這種格式:<ebusiness:analog>。這樣就能與其他類似的含義中區分開來,比如 <sciencefiction:analog><synthesizers:analog>

關於擴展性,一個更實際的例子可以在 RSS 2.0 規範的示例文件中找到:

清單 2. RSS 2.0 規範示例文件中的名稱空間


<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.5 on 9/30/2002; 4:00:00 AM Pacific -->
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">
  <channel>
    <title>Scripting News</title>
    <link>http://www.scripting.com/</link>
    <description>A weblog about scripting and stuff like that.</description>
    <language>en-us</language>
    <blogChannel:blogRoll>
      http://radio.weblogs.com/0001015/userland/scriptingNewsLeftLinks.opml
    </blogChannel:blogRoll>
      <item>
      <description>Joshua Allen: 
      <a href="http://www.netcrucible.com/blog/2002/09/29.html#a243">
      Who loves namespaces?</a></description>
      <pubDate>Sun, 29 Sep 2002 19:59:01 GMT</pubDate>
      <guid>
      http://scriptingnews.userland.com/backissues/2002/09/29#When:12:59:01PM
      </guid>
      </item>
  </channel>
</rss>

在這個例子中,定義了一個稱爲 blogChannel 的名稱空間。它指向一個文檔,該文檔解釋了幾種常見於 weblog 的新元素的用法。其中之一是 <blogroll>。文檔說明,blogroll 是 weblog 中的一個鏈接集合,指向與您的 weblog 內容相關的站點。

<blogChannel:blogRoll> 標籤提供了用戶或軟件所需要的信息,知道 blogRoll 是一個定義在 blogChannel 名稱空間中的元素,而且可以找到這個文檔的位置。

同樣,RSS 2.0 只對 屬於規範的元素要求名稱空間。所有的基本標籤都假定在 RSS 2.0 名稱空間中。這使得這種格式更容易使用,因爲除非需要擴展 RSS,否則您完全不需要知道名稱空間。

結束語
本文考察了 RSS 在內容連鎖和聚合領域的重要性。文章主要討論 RSS 2.0,因爲這是最新的規範版本,而且正在迅速普及。本文也考察了處理 RSS 可以使用的工具,包括集聚器、驗證程序和解析器。更多信息請參閱參考資料

發佈了15 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章