RSS 2.0 與 Atom 1.0 的結構規範與驗證要求
在網路內容發佈的領域中,RSS 2.0 與 Atom 1.0 是最常被使用的兩種 XML 格式。雖然兩者的目的相同,皆是為了傳播網站更新,但其底層的結構規範與必填欄位卻有顯著差異。
對於 RSS 2.0 而言,其根元素為 <rss>,且內部必須包含一個直屬的 <channel> 元素。若一個 RSS 2.0 文件中包含零個或多於一個直屬 <channel>,即不符合規範。在 RSS 項目(<item>)的層級中,最核心的規則是「標題或說明」(title-or-description)規則,也就是每個項目必須至少含有 <title> 或 <description> 其中之一。此外,驗證時也會讀取並檢查 GUID、link(連結)以及發佈日期(publication date)。
相較之下,Atom 1.0 的結構要求更為嚴格。Atom 項目(<entry>)必須具備唯一的 ID、title(標題)與 updated(更新時間)。在作者資訊方面,Atom 設有「作者繼承」規則,若 Feed 層級沒有定義 <author>,則每個 <entry> 內部都必須直接加入 <author>。此外,當 Atom 項目沒有內嵌的 <content> 時,必須加入替代連結(alternate links)。
常見的 XML 格式錯誤與結構問題
在處理 Feed XML 時,常會遇到阻礙解析的結構性問題。最常見的錯誤包括 XML 格式毀損、不支援的宣告或版本不符。
- DOCTYPE 宣告:Feed 中若包含 DOCTYPE 宣告,可能會引發安全或解析問題。驗證時會要求「請先移除 DOCTYPE 宣告,再檢查此 Feed。」
- XML 格式錯誤:若 XML 標籤未閉合或屬性格式不正確,必須先「修正格式錯誤的 XML,然後重新驗證。」
- 版本與格式不符:本工具專為 RSS 2.0 與 Atom 1.0 設計。若偵測到舊版 RSS、RDF/RSS 1.0 或 Atom 0.3,雖然能辨識其格式,但不會套用不適合的規則進行驗證。若格式完全無法辨識,則會顯示「未知 Feed 格式」。
連結、ID 與 xml:base 的解析機制
Feed 中的連結與識別碼(ID)必須遵循嚴格的 URI/URL 規範,否則閱讀器將無法正確導向或識別內容。
在 Atom 1.0 中,ID 必須是絕對的國際化資源識別碼(IRI),「請為 ‹field› 使用絕對 IRI;相對識別碼不是有效的 Atom ID。」
對於連結欄位,所有網址都必須能夠被解析。Atom 支援相對路徑,但這必須建立在有提供 xml:base 屬性的前提下。如果 Feed 中沒有可用的 xml:base,所有連結都必須使用絕對位址。若相對連結無法解析,將會觸發「請為 ‹field› 使用絕對位址;只有具備可用 xml:base 的 Atom 參照才能使用相對位址。」的錯誤。
需要特別注意的是,本驗證器在檢查連結時,僅會解析欄位並透過 xml:base 解析相對參照,絕對不會實際開啟或連線至這些 URL。因此,連結的伺服器可用性、重新導向(Redirects)、SSL 憑證有效性以及目標網頁的實際內容,皆不在檢查範圍內。
日期格式與內容衝突規則
日期格式錯誤是導致 Feed 無法在閱讀器中正常排序的常見原因。RSS 2.0 與 Atom 1.0 對於日期格式有不同的標準(例如 RFC 822 與 RFC 3339)。若日期欄位填入無法解析的文字,驗證器會提示「請使用此 Feed 格式要求的真實日期。」
在內容呈現上,Atom 1.0 允許使用外部來源(src 屬性)來載入內容,但這會觸發互斥規則:
- 內容來源衝突:當
<content>元素使用src屬性時,其內部不能再包含任何文字或子元素。否則會出現「<content> 使用 src 時,請移除其中的文字和子元素。」的錯誤。 - 缺少摘要:當 Atom 內容來自外部(使用
src)或無法作為純文字讀取時,必須提供<summary>元素,否則會提示「Atom 內容來自外部或無法作為文字讀取時,請加入 <summary>。」
結構驗證與內容驗證的區別
使用本工具時,必須釐清「結構驗證」與「內容驗證」的本質差異。
本驗證器僅針對 XML 語法、RSS 2.0 與 Atom 1.0 的標準規範、必填欄位完整性以及連結格式進行靜態結構檢查。此報告只檢查結構與常見格式規則,不能證明內容正確、安全、可被所有閱讀器接受或已適合發佈。 內容是否包含錯字、敏感資訊、惡意代碼,或是排版在特定閱讀器上的視覺呈現效果,皆無法透過此工具得知。
隱私保護與瀏覽器本機處理
本工具在設計上極為重視用戶的隱私。你的 Feed 會在瀏覽器本機檢查,BroBroGo 不會上傳或儲存任何內容。 所有的 XML 解析、欄位比對與錯誤偵測工作,皆完全在您個人的電腦或裝置瀏覽器中執行,資料不會傳送至任何外部伺服器。
常見問題解答 (FAQ)
此驗證器支援哪些 Feed 格式?
它支援目前的 RSS 2.0 與 Atom 1.0 文件。舊版 RSS、RDF/RSS 1.0 和 Atom 0.3 會被辨識,但不會套用不適合的規則來驗證。
它會開啟或測試 Feed 中的連結嗎?
它會解析包含連結的欄位,並透過 xml:base 解析 Atom 相對參照,但不會開啟 URL,因此不會測試可用性、重新導向、憑證或目標內容。
會檢查哪些項目欄位?
RSS 項目會檢查標題或說明,並讀取 GUID、連結和發佈日期;Atom 項目會檢查 ID、標題、更新時間、作者繼承、替代連結,以及內容與摘要規則。
驗證是否有輸入大小限制?
有的。本工具每次最多可接受 500,000 個字元的 XML 輸入。若超過此限制,會顯示「每次最多可檢查 ‹max› 個字元。」。若 Feed 結構過於複雜導致運算超時,則會顯示「驗證耗時過長,請嘗試較小的 Feed。」。