Atom是一對彼此相關(guān)的標(biāo)準(zhǔn)。Atom供稿格式(Atom Syndication Format)是用于網(wǎng)站消息來源,基與XML的文檔格式;而Atom出版協(xié)定(Atom Publishing Protocol,簡稱AtomPub或APP)是用于新增及修改網(wǎng)絡(luò)資源,基于HTTP的協(xié)議。它被站點和客戶工具等用來聚合網(wǎng)絡(luò)內(nèi)容,包括weblog和新聞標(biāo)題等,它借鑒了各種版本RSS的使用經(jīng)驗。
Atom是IETF的“建議標(biāo)準(zhǔn)”,Atom供稿格式列為 RFC 4287,而Atom出版協(xié)定列為 RFC 5023。
Atom與RSS 2.0的比較
當(dāng)初發(fā)展Atom的動機(jī)在于廣泛應(yīng)用RSS 2.0時所遇到的問題。為了降低開發(fā)支持Web聚合應(yīng)用的難度,下面列出Atom 1.0所克服的RSS 2.0幾個主要問題:
1、RSS 2.0 可能包含文本或經(jīng)過編碼的HTML內(nèi)容,同時卻沒有提供明確的區(qū)分辦法;相比之下,Atom 則提供了明確的標(biāo)簽(也就是typed)。
2、RSS 2.0 的 description 標(biāo)簽可以包含全文或摘要(盡管該標(biāo)簽的英文含義為描述或摘要)。Atom 則分別提供了 summary 和 content標(biāo)簽,用以區(qū)分摘要和內(nèi)容,同時Atom 允許在summary中添加非文本內(nèi)容。
3、RSS 2.0 存在多種非標(biāo)準(zhǔn)形式的應(yīng)用,而 Atom 具有統(tǒng)一的標(biāo)準(zhǔn),這便于內(nèi)容的聚合和發(fā)現(xiàn)。
4、 Atom 有符合XML標(biāo)準(zhǔn)的命名空間,RSS 2.0 卻沒有。
5、Atom 通過XML內(nèi)置的xml:base標(biāo)簽來指示相對地址(URI),RSS 2.0 則無相應(yīng)的機(jī)制區(qū)分相對地址和絕對地址。
6、Atom 通過XML內(nèi)置的xml:lang,而 RSS 采用自己的language標(biāo)簽。
7、Atom 強(qiáng)制為每個條目設(shè)定唯一的ID,這將便于內(nèi)容的跟蹤和更新。
8、Atom 1.0 允許條目單獨成為文檔,RSS 2.0 則只支持完整的種子文檔,這可能產(chǎn)生不必要的復(fù)雜性和帶寬消耗。
9、Atom 按照RFC 3339標(biāo)準(zhǔn)(ISO 8601標(biāo)準(zhǔn)的一個子集)表示時間 ,而RSS 2.0 中沒有指定統(tǒng)一的時間格式。
10、Atom 1.0 具有在 IANA 注冊了的 MIME 類型,而 RSS 2.0 所使用的 application/rss+xml 并未注冊。
11、Atom 1.0 標(biāo)準(zhǔn)包括一個 XML schema,RSS 2.0 卻沒有。
12、Atom 是IETF組織標(biāo)準(zhǔn)化程序下的一個開放的發(fā)展中標(biāo)準(zhǔn),RSS 2.0 則不屬于任何標(biāo)準(zhǔn)化組織,而且它不是開放版權(quán)的。
Atom 文檔示例:
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">...</title>
<subtitle type="html">...</subtitle>
<updated>...</updated>
<id>...</id>
<link rel="alternate" type="text/html"
hreflang="en" />
<copyright>...</copyright>
<generator uri="http://www.example.com/" version="1.0"> ...</generator>
<entry>
<title>...</title>
<link rel="alternate" type="text/html"
/>
<link rel="enclosure" type="audio/mpeg" length="1337"
/>
<id>...</id>
<updated>...</updated>
<published>...</published>
<author>
<name>...</name>
<uri>...</uri>
<email>...</email>
</author>
<contributor>
<name>...</name>
<uri>...</uri>
</contributor>
<contributor>
<name>...</name>
<uri>...</uri>
</contributor>
<content type="xhtml" xml:lang="en"
xml:base="http://diveintomark.org/">...</content>
</entry>
</feed>