RSS 2.0 與 Atom 1.0 的結構要求
RSS 2.0 與 Atom 1.0 是現今網絡發佈最常用的兩種 Feed 格式,兩者在結構規範上各有嚴格的要求。
在 RSS 2.0 規範中,Feed 必須包含一個根元素 <rss>,且內部必須正好包含一個直接的 <channel> 元素。如果找到的 <channel> 數量不等於一個,驗證器會顯示「RSS 必須正好包含一個直接的 <channel>;找到 ‹count› 個。」。每個 RSS 項目(<item>)必須符合「標題或描述」(title-or-description)規則,即必須含有 <title> 或 <description> 至少其中一個欄位,並可讀取 GUID、link 和發佈日期。
Atom 1.0 則採用不同的 XML 命名空間與結構標準。Atom 項目(<entry>)必須具備唯一的 <id>、<title> 以及 <updated> 時間戳記。此外,Atom 設有嚴格的「作者繼承」規則,若項目本身、其 <source> 或 Feed 根節點皆沒有提供 <author>,將會觸發「請在此項目、其 <source> 或 Feed 中加入 <author>。」的錯誤。
連結與識別碼的驗證規則
Feed 內的連結與識別碼(ID)必須符合嚴格的格式標準,否則訂閱閱讀器將無法正確解析:
- 絕對地址與相對地址:Feed 內的連結必須能被解析為 URL 或 URI 參照。對於 Atom 的 ID,規範要求必須使用絕對 IRI,相對識別碼在 Atom ID 中屬於無效格式。
- xml:base 的解析作用:在 Atom Feed 中,如果使用了相對地址,必須配合可用的
xml:base屬性進行解析。若無可用的xml:base且使用了相對地址,驗證器會提示「‹field›請使用絕對地址;只有具備可用 xml:base 的 Atom 參照才能使用相對地址。」。 - 唯一性檢查:Feed 內的所有項目 ID 必須是唯一的。如果偵測到重複的 ID,系統會指出該 ID 重複了首次出現的行數。
常見的 XML 與格式錯誤
在驗證 Feed 時,常會遇到阻礙解析的結構問題:
- DOCTYPE 宣告:為了安全與相容性,Feed 內不應包含 DOCTYPE 宣告。若偵測到此宣告,必須將其移除才能進行後續檢查。
- 格式錯誤的 XML:XML 必須符合良好格式(Well-formed)的語法規範,例如標籤必須正確閉合、屬性值必須使用引號等。
- 版本不符:本工具專為 RSS 2.0 及 Atom 1.0 設計。若偵測到其他版本(例如舊版 RSS、RDF/RSS 1.0 或 Atom 0.3),雖然能識別其格式,但不會套用錯誤版本的規則進行檢查。
結構驗證與內容驗證的區別
必須釐清的是,本工具進行的是結構與格式規則的驗證,而非內容驗證。
驗證器在檢查連結欄位時,只會解析該欄位是否符合 URL/URI 語法,或者利用 xml:base 解析相對參照。驗證器絕不會實際開啟或連線至這些 URL。因此,連結目標網站是否在線、是否存在重新導向、SSL 憑證是否過期,以及目的地的實際內容是否安全或正確,皆不在檢查範圍之內。此報告無法證明內容的絕對準確性或發佈就緒狀態。
瀏覽器端處理與限制
本工具的運作完全在用戶的瀏覽器內進行,Feed 內容不會上載或儲存至伺服器。
為了確保瀏覽器運作流暢,工具設有以下限制:
- 字元限制:每次檢查最多接受 500,000 個字元。
- 顯示上限:報告最多顯示 200 個問題和 100 個項目,超出此數量的部分將會被截斷並顯示提示。
- 逾時機制:若 Feed 結構過於複雜導致驗證時間過長,系統會中止並提示嘗試較小的 Feed。
常見問題
此驗證器支援哪些 Feed 格式?
它會驗證現行的 RSS 2.0 和 Atom 1.0 文件。舊版 RSS、RDF/RSS 1.0 和 Atom 0.3 Feed 會被識別,但不會套用錯誤版本的規則來檢查。
它會開啟或測試 Feed 內的連結嗎?
它會解析含連結的欄位,並透過 xml:base 解析 Atom 相對參照;但絕不會開啟 URL,因此不會測試可用性、重新導向、憑證或目的地內容。
會檢查哪些項目欄位?
RSS 項目會檢查標題或描述,並讀取 GUID、連結和發佈日期。Atom 項目會檢查 ID、標題、更新時間、作者繼承、替代連結,以及內容或摘要規則。
為什麼會出現「請移除 DOCTYPE 宣告」的錯誤?
為了確保 Feed 的安全性和相容性,RSS 2.0 和 Atom 1.0 文件不應包含 DOCTYPE 宣告。請在編輯器中刪除該行 XML 宣告,然後重新貼上驗證。