Atom Feed 格式說明
簡介
Atom Syndication Format 中文翻譯作 Atom 聯合格式,是一種基於 XML 用來對網站內容做格式化的規範,與 RSS 一樣可作為 Feed 讓閱讀器能更新資料等功能。完整的規範可以在 RFC 4287 查看,本文以表格的方式整理說明。
命名空間
Atom 1.0 版命名空間為 http://www.w3.org/2005/Atom
MIME Type
MIME Type(Content Type 或稱為 Media Type) 為 application/atom+xml
結構與定義
基本資料型態
atomTextConstruct
資料型態為 atomTextConstruct 的 Element 定義以下屬性
| Attribute | 必要 | 說明 |
|---|---|---|
| type | X | 類型 |
Element內容依據type不同變化,規則如下:
- text: 純文字,不可有子節點
- html: HTML 格式的純文字,不可有子節點
- xhtml: XHTML 之節點內容,以
<xhtml:div>起始
atomDateConstruct
RFC3339 標準,也可以是符合 ISO.8601.1988、W3C.NOTE-datetime-19980827 或 W3C.REC-xmlschema-2-20041028 之日期格式,例如:
1 | <updated>2003-12-13T18:30:02Z</updated> |
atomPersonConstruct
資料型態為atomPersonConstruct的Element定義以下屬性
| Element | 必要 | 多筆 | 說明 |
|---|---|---|---|
| name | O | X | 名稱 |
| uri | X | X | IRI |
| X | X | 電子郵件 |
文件
Atom 的 XML 起始根節點可以是 <feed> 或 <entry> 兩種 Element,一般而言,主要是從 <feed> 開始取得包含 <entry> 的各種資訊,但有時候 <feed> 中的 <entry> 只有摘要部分資訊,必須進一步連結至 <entry> 的完整資訊路徑,此時 <entry> 就會是根節點。
元素
<feed>
<feed> 包含一些 Metadata 和一些資料的關連,<feed> 之中定義了以下 Element
| Element | 必要 | 多筆 | 資料型態 | 說明 |
|---|---|---|---|---|
<author> | Δ | O | atomPersonConstruct | 作者,<feed> 必須要包含至少一個 <author>,除非之下的所有 <entry> 都有包含<author> |
<category> | X | O | <category> | 分類 |
<contributor> | X | O | atomPersonConstruct | 貢獻者 |
<generator> | X | X | <generator> | 產生者 |
<icon> | X | X | 純文字 | 圖示,寬高比應該為 1:1 |
<id> | O | X | 純文字 | 唯一識別ID |
<link> | X | O | <link> | 連結,<feed> 應該包含一個連結指向自己 (ref=”self”) |
<logo> | X | X | 純文字 | 圖示,寬高比應該為 2:1 |
<rights> | X | X | atomTextConstruct | 版權資訊 |
<subtitle> | X | X | atomTextConstruct | 副標題 |
<title> | O | X | atomTextConstruct | 標題 |
<updated> | O | X | atomDateConstruct | 最後更新時間 |
<entry> | X | O | <entry> | 包含的項目 |
<entry>
<entry> 描述主要的資料內容,<entry> 之中定義了以下 Element
| Element | 必要 | 多筆 | 資料型態 | 說明 |
|---|---|---|---|---|
<author> | Δ | O | atomPersonConstruct | 作者,<entry> 必須要包含至少一個 <author>,除非之下的 <source> 或者此 <feed> 有包含 <author> |
<category> | X | O | <category> | 分類 |
<content> | X | X | <content> | 內容 |
<contributor> | X | O | atomPersonConstruct | 貢獻者 |
<id> | O | X | 純文字 | 唯一識別 ID,可以有相同 ID 的 <entry>,但更新時間必須不同,表示不同版本 |
<link> | X | O | <link> | 連結,如果沒有 <content> 就必須包含一個連結 (ref=”alternate”),且多個具有 ref=”alternate” 的連結,type 和 hreflang 的屬性不能都相同 |
<published> | X | X | atomDateConstruct | 發布時間 |
<rights> | X | X | atomTextConstruct | 版權資訊 |
<source> | X | X | <source> | 資料來源,當資料來源是從別的 <feed> 拷貝過來時,應用此Element提供原始 <feed> 資訊 |
<summary> | Δ | X | atomTextConstruct | 摘要,如果 <content> 是外部資源(具有src屬性)或內容是Base64編碼時,必須要有 <summary> |
<title> | O | X | atomTextConstruct | 標題 |
<updated> | O | X | atomDateConstruct | 最後更新時間 |
<content>
<content> 描述 <entry> 的內容,<content> 之中定義了以下屬性
| Attribute | 必要 | 說明 |
|---|---|---|
| type | X | 類型,無設定時,預設為 text |
| src | X | 外部連結 |
非外部連結時 (無 src 屬性),Element 內容依據不同 type 規則如下:
- text、html 和 xhtml 時,如同 atomTextConstruct 用法
- text/ 開頭時,不能有子節點
- /xml 或 +xml 結尾時,只能有一個子節點作為起始
- 其他類型時,必須用 Base64 編碼
外部連結時 (有 src 屬性),應有 type 屬性,且 Element 內容應為空
<category>
<category> 描述 <entry>、<feed> 或 <source> 的分類,<category> 之中定義了以下屬性
| Attribute | 必要 | 說明 |
|---|---|---|
| term | O | 識別 ID |
| scheme | X | IRI |
| label | X | 讓人閱讀的顯示文字 |
Element 內容為空
<generator>
<generator> 描述 <feed> 或 <source> 的產生者,<generator> 之中定義了以下屬性
| Attribute | 必要 | 說明 |
|---|---|---|
| uri | X | IRI |
| version | X | 版本 |
Element 內容為產生者名稱之純文字
<link>
<link> 描述<entry>、<feed> 或 <source> 的連結,<link> 之中定義了以下屬性
| Attribute | 必要 | 說明 |
|---|---|---|
| href | O | IRI |
| rel | X | 關聯類型,無設定時,預設為 alternate。格式應符合 isegment-nz-nc 或 IRI 且不包含空白。另外,關聯定義可參考 RFC 5988,在 Atom 中特別定義其中 5 個項目:
|
| type | X | 類型 |
| hreflang | X | 語系 |
| title | X | 標題 |
| length | X | 連結內容的大小,當 rel 為 enclosure 時,應該要有此屬性 |
Element 內容為空
<source>
<source> 基本上和 <feed> 一模一樣,除了不包含 <entry>,<source> 之中定義了以下 Element
| Element | 必要 | 多筆 | 資料型態 | 說明 |
|---|---|---|---|---|
<author> | X | O | <author> | 作者 |
<category> | X | O | <category> | 分類 |
<contributor> | X | O | <contributor> | 貢獻者 |
<generator> | X | X | <generator> | 產生者 |
<icon> | X | X | 純文字 | 圖示,寬高比應該為 1:1 |
<id> | X | X | 純文字 | 唯一識別ID,應該要有 |
<link> | X | O | <link> | 連結 |
<logo> | X | X | 純文字 | 圖示,寬高比應該為 2:1 |
<rights> | X | X | atomTextConstruct | 版權資訊 |
<subtitle> | X | X | atomTextConstruct | 副標題 |
<title> | X | X | atomTextConstruct | 標題,應該要有 |
<updated> | X | X | atomDateConstruct | 最後更新時間,應該要有 |
