華文世界 RSS 亂象
2007 年 九月 27 日 (星期四) 10:00 pm分類:電腦
標籤: programming, RSS
「不要重新發明輪子」雖是老生常談,但它不僅節省精力,更是為了善用專家智慧,避免自己思慮不周,寫出錯誤百出的程式 ── 特別是有時候連自己也不知道有這種錯誤存在。
今天就拿 RSS 當例子。
隨著 Web 2.0 風潮盛行,部落格、新聞網站、論壇網站紛紛將 RSS 輸出列為標準配備,方便網友訂閱最新資訊;Web applications 甚至將 RSS 格式列為 mashup、SOA 的重要媒介。一夕之間,沒有了 RSS,彷彿網站就不夠專業。
不過,RSS 並沒有表面上看起來這麼簡單。
從 Wikipedia 的 RSS 條目可以看出,RSS 歷經多次演化,彼此之間也有許多不相容之處;更別提另一派 Atom 了。不過,只要你用的是國際通行的架站軟體(像 WordPress)或 BSP(像 Blogger),這些伺服器產生的 RSS 輸出多半都經過嚴格檢驗,不太會有大問題。
反倒是自己手工打造的網站問題多多,華人世界尤其明顯。可能這些工程師自認為 RSS 很簡單,兩三下就搞定,不啃規格書,也不使用現成的開放原始碼程式庫。於是乎,錯誤百出的 RSS 2.0 內容就這麼撒到全球網路上……
BSP
- udn 部落格(RSS 例子)
錯誤的日期格式:2007/09/27 18:34:20
正確的日期格式:Thu, 27 Sep 2007 18:34:20 +0800
[評] 奇怪的是,同屬 udn 體系的聯合新聞網,他們的 RSS 就沒這問題;敢情是連自家人的程式也都各自為政互不流通?
[2007-10-23 補充] 已改善。 - Windows Live Spaces(RSS 例子)
錯誤的日期格式:星期日, 23 九月 2007 22:05:24 GMT
正確的日期格式:Sun, 23 Sep 2007 22:05:24 GMT
[評] 當你把瀏覽器的語系設成中文優先時,Windows Live Spaces 會將 RSS 日期格式翻譯成在地語言……唉,多此一舉! - 大陸新浪 Blog(RSS 例子)
錯誤的日期格式:Thu, 27 Sep 2007 08:06:20 GMT+8
正確的日期格式:Thu, 27 Sep 2007 08:06:20 +0800
新聞
- Yahoo!奇摩新聞(RSS 例子)
錯誤的日期格式:Thu 27 Sep 2007 10:09:05 GMT
正確的日期格式:Thu, 27 Sep 2007 10:09:05 GMT
[評] Qing 在〈用 ROME parse Yahoo 新聞的 RSS 內容〉一文中曾指出這問題,兩個半月過去了,問題依然存在;同樣的問題也出現在 Yahoo!奇摩部落格上。
[2007-11-20 補充] 已改善。 - 百度新聞(RSS 例子)
錯誤的日期格式:Thu, 27 Sep 2007 17:18:58
正確的日期格式:Thu, 27 Sep 2007 17:18:58 +0800
架站軟體
- LifeType(Atom 例子)
錯誤的日期格式:2007-09-09T10:21:01+0800
正確的日期格式:2007-09-09T10:21:01+08:00
[2007-10-01 補充] 已承諾改善。 - LeoBBS(RSS 例子)
錯誤的日期格式:2007/09/26 02:18pm
正確的日期格式:Wed, 26 Sep 2007 14:18:00 +0800 - F2Blog(RSS 例子)
錯誤的日期格式:2007-09-27 16:36
正確的日期格式:Thu, 27 Sep 2007 16:36:00 +0800 - F2Blog(Atom 例子)
錯誤的日期格式:2007-09-27 16:36:59
正確的日期格式:2007-09-27T16:36:59+08:00
錯誤的文章連結格式:http://www.yealing.netrewrite.php/read-1095.html
正確的文章連結格式:http://www.yealing.net/rewrite.php/read-1095.html
其他
- I’m Vlog(RSS 例子)
日期擺在<description>裡,而不是擺在<pubDate>。 - I’m Vlog(RSS 例子)
錯誤的日期格式:2007/9/24 上午 03:35:00
正確的日期格式:Mon, 24 Sep 2007 03:35:00 +0800
而且,日期居然是擺在<datePosted>裡,而不是擺在<pubDate>。
[評] 同一個網站居然有這麼多種 RSS 變形,還擅自發明新的 tag……真是一整個冏呀!
這些還只是冰山一角,我沒點出來的 utf-8 編碼、CDATA、XML validation 問題還有得瞧呢!這些亂象,都是不啃規格書、不用程式庫的後果。
希望大家在研發酷炫新功能的同時,也別忘了回頭遵循網路世界的國際標準,做個網路世界的好公民呀!


追蹤留言回應:以
引用通告 (trackback):![[add to funP]](http://william.cswiz.org/blog/wp-content/themes/william/images/add-funp.png)
![[add to HEMiDEMi]](http://www.hemidemi.com/sticker/user/roxytom.bluecircus.net.gif)
![[add to udn bookmark]](http://bookmark.udn.com/html/help/80_20_02.gif)

2007 年 九月 28日 於 8:27 pm
先生 有這麼嚴重嗎?
2007 年 九月 28日 於 9:02 pm
RSS 是給程式看的,而程式之間的溝通全憑標準規範。這些不遵守標準的網站,也就是破壞了程式之間的協議默契。你說嚴不嚴重?
尤其 XML 又是特重 DTD/schema 的 validation,許多程式也都是立足於這個基礎上。不照標準來,輕則會讓程式產生不正常的行為,重則會讓程式不預警掛掉。
譬如說,許多 power user 都會用 Yahoo Pipes 的 union + unique + sort by date 運算去處理他所訂閱的一大堆 RSS feed。現在,請你用這一串運算去處理文中點名的所有網站,再混雜些正常的、非 +0800 時區的網站,看看結果會是什麼樣子……
也不要以為你訂閱的 RSS 2.0 來源都是台灣的主機,都是繁體中文的網站,就算時區格式有錯,只要矇上眼睛統統當成 +0800 就好;君不見很多架站軟體(像 WordPress),會把時間換算成 GMT 時區,以求統一……
既然有心玩 Web 2.0,既然有心支援 RSS,那麼,一點點舉手之勞,把這功能從 A 變成 A+,從 95 分變成 100 分,不是更好嗎?為什麼要殘留個 5 分給人詬病呢?
如果認為不遵守網路世界的國際標準是沒什麼大不了的事,那麼,RFC 標準、W3C 標準都可以收攤了,反正 nobody cares 嘛!
2007 年 九月 29日 於 1:20 am
很多人心中都還有一個差不多先生啊。
2007 年 九月 29日 於 8:56 am
要是大家都不遵守規則,只會最後變成像是 HTML 現在的狀況,
寫個程式還要多寫很多容錯的功能。
2007 年 九月 30日 於 8:29 pm
寫得很好,不過雖然我也同意應該遵循RSS的規範,作者在此篇文章只做了批評的動作,卻沒有提供該如何改進的方法。若能將幾個深入淺出的RSS教學網站列出來,或者由作者自己整理出快速學會如何做RSS feed或許對讀此篇文章的工程師們會比較有幫助。
2007 年 九月 30日 於 9:53 pm
Wu-Man:
我比較熟 Java,在本篇文章、或是我過去寫的文章中(請按下本文標題下面的 RSS 標籤),都可以看到我一再提到 ROME。當然啦,ROME 並不完美,但在 Java 世界裡,它已經是目前最好的選擇,至少不會出現文中點出的輸出問題。
如果不喜歡去 Google 查找相關網頁及規格,也不喜歡去 CPAN、PEAR 之類的程式庫大本營查找可用的程式庫,那麼,去 Amazon 搜尋一下,也可以看到一些 RSS 專書。像素富盛名的 “in Action” 系列就有 RSS and Atom in Action,O’Reilly 許多語言的 “Cookbook” 書系也都有 RSS 主題。
我相信對有心的工程師來說,這都不是難事。
2007 年 十月 1日 於 12:15 am
mmm… Atom 的確是跟別人不一樣,不用 +0800 而是用 +08:00 ..
我們會在下一版前修復他,不過應該不是 1.2.5,因為已經包好要釋出了
2007 年 十月 1日 於 11:54 pm
這篇文章太重要了,所有網站工程師都應該印出來貼到牆上。
玩Yahoo Pipes時最能體會到這種亂象,union幾個feed後完全無法用時間排序,就是因為各家寫法不一。
網站不能被好好的mashup,Web 2.0的時代會少去很多流量的….
2007 年 十一月 29日 於 4:25 pm
Hi William:
這個 bug 已經在 1.2.6 的 branch rev. 6091 中修復了。謝謝! ^_^
Bug report 在這: http://bugs.lifetype.net/view.php?id=1428
Mark
2008 年 六月 15日 於 11:09 pm
[...] 延伸閱讀:華文世界的RSS亂象 [...]
2008 年 七月 2日 於 2:33 pm
Dear William,
我們的網站現在在做RSS
想請問你一下
我們現在已經可以用ROME寫出RSS format的xml了
但是要怎麼才能讓RSS的layout長的像大部分網站的RSS版型
就是使用者會看到「立即訂閱」區塊及「RSS」區塊,而不是xml
是需要另外用CSS設定,還是透過支援的瀏覽器自己會做出layout呢?
謝謝囉