簡介

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必要說明
typeX類型

Element內容依據type不同變化,規則如下:

  1. text: 純文字,不可有子節點
  2. html: HTML 格式的純文字,不可有子節點
  3. xhtml: XHTML 之節點內容,以 <xhtml:div> 起始

atomDateConstruct

RFC3339 標準,也可以是符合 ISO.8601.1988W3C.NOTE-datetime-19980827W3C.REC-xmlschema-2-20041028 之日期格式,例如:

1
2
3
4
<updated>2003-12-13T18:30:02Z</updated>
<updated>2003-12-13T18:30:02.25Z</updated>
<updated>2003-12-13T18:30:02+01:00</updated>
<updated>2003-12-13T18:30:02.25+01:00</updated>

atomPersonConstruct

資料型態為atomPersonConstruct的Element定義以下屬性

Element必要多筆說明
nameOX名稱
uriXXIRI
emailXX電子郵件

文件

Atom 的 XML 起始根節點可以是 <feed><entry> 兩種 Element,一般而言,主要是從 <feed> 開始取得包含 <entry> 的各種資訊,但有時候 <feed> 中的 <entry> 只有摘要部分資訊,必須進一步連結至 <entry> 的完整資訊路徑,此時 <entry> 就會是根節點。

元素

<feed>

<feed> 包含一些 Metadata 和一些資料的關連,<feed> 之中定義了以下 Element

Element必要多筆資料型態說明
<author>ΔOatomPersonConstruct作者,<feed> 必須要包含至少一個 <author>,除非之下的所有 <entry> 都有包含<author>
<category>XO<category>分類
<contributor>XOatomPersonConstruct貢獻者
<generator>XX<generator>產生者
<icon>XX純文字圖示,寬高比應該為 1:1
<id>OX純文字唯一識別ID
<link>XO<link>連結,<feed> 應該包含一個連結指向自己 (ref=”self”)
<logo>XX純文字圖示,寬高比應該為 2:1
<rights>XXatomTextConstruct版權資訊
<subtitle>XXatomTextConstruct副標題
<title>OXatomTextConstruct標題
<updated>OXatomDateConstruct最後更新時間
<entry>XO<entry>包含的項目

<entry>

<entry> 描述主要的資料內容,<entry> 之中定義了以下 Element

Element必要多筆資料型態說明
<author>ΔOatomPersonConstruct作者,<entry> 必須要包含至少一個 <author>,除非之下的 <source> 或者此 <feed> 有包含 <author>
<category>XO<category>分類
<content>XX<content>內容
<contributor>XOatomPersonConstruct貢獻者
<id>OX純文字唯一識別 ID,可以有相同 ID 的 <entry>,但更新時間必須不同,表示不同版本
<link>XO<link>連結,如果沒有 <content> 就必須包含一個連結 (ref=”alternate”),且多個具有 ref=”alternate” 的連結,type 和 hreflang 的屬性不能都相同
<published>XXatomDateConstruct發布時間
<rights>XXatomTextConstruct版權資訊
<source>XX<source>資料來源,當資料來源是從別的 <feed> 拷貝過來時,應用此Element提供原始 <feed> 資訊
<summary>ΔXatomTextConstruct摘要,如果 <content> 是外部資源(具有src屬性)或內容是Base64編碼時,必須要有 <summary>
<title>OXatomTextConstruct標題
<updated>OXatomDateConstruct最後更新時間

<content>

<content> 描述 <entry> 的內容,<content> 之中定義了以下屬性

Attribute必要說明
typeX類型,無設定時,預設為 text
srcX外部連結

非外部連結時 (無 src 屬性),Element 內容依據不同 type 規則如下:

  1. text、html 和 xhtml 時,如同 atomTextConstruct 用法
  2. text/ 開頭時,不能有子節點
  3. /xml 或 +xml 結尾時,只能有一個子節點作為起始
  4. 其他類型時,必須用 Base64 編碼

外部連結時 (有 src 屬性),應有 type 屬性,且 Element 內容應為空

<category>

<category> 描述 <entry><feed><source> 的分類,<category> 之中定義了以下屬性

Attribute必要說明
termO識別 ID
schemeXIRI
labelX讓人閱讀的顯示文字

Element 內容為空

<generator>

<generator> 描述 <feed><source> 的產生者,<generator> 之中定義了以下屬性

Attribute必要說明
uriXIRI
versionX版本

Element 內容為產生者名稱之純文字

<link> 描述<entry><feed><source> 的連結,<link> 之中定義了以下屬性

Attribute必要說明
hrefOIRI
relX關聯類型,無設定時,預設為 alternate。格式應符合 isegment-nz-nc 或 IRI 且不包含空白。另外,關聯定義可參考 RFC 5988,在 Atom 中特別定義其中 5 個項目:
  • alternate: 目前資源別種顯示方式 (例如搭配 hreflang 為其他語言版本)
  • related: 相關資源
  • self: 目前資源
  • enclosure: 相關資源,但資料內容較大
  • via: 資源由何處提
typeX類型
hreflangX語系
titleX標題
lengthX連結內容的大小,當 rel 為 enclosure 時,應該要有此屬性

Element 內容為空

<source>

<source> 基本上和 <feed> 一模一樣,除了不包含 <entry><source> 之中定義了以下 Element

Element必要多筆資料型態說明
<author>XO<author>作者
<category>XO<category>分類
<contributor>XO<contributor>貢獻者
<generator>XX<generator>產生者
<icon>XX純文字圖示,寬高比應該為 1:1
<id>XX純文字唯一識別ID,應該要有
<link>XO<link>連結
<logo>XX純文字圖示,寬高比應該為 2:1
<rights>XXatomTextConstruct版權資訊
<subtitle>XXatomTextConstruct副標題
<title>XXatomTextConstruct標題,應該要有
<updated>XXatomDateConstruct最後更新時間,應該要有