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 | 最後更新時間,應該要有 |