转自http://hi.baidu.com/_1_1_1_1/blog/item/bb7d54a7083d9094d143580d.html
The Atom Syndication Format
draft-ietf-atompub-format-11
Status of this Memo
当提交这个英特网草案(Internet-Draft)时,每个作者都声称TA知道的所有可用的专利或其它 IPR 权利都
已经或者将要解密,且TA将会知道的也将依照 BCP 79 的第6章节解密.
英特网草案(Internet-Draft)是 Internet Engineering Task Force (IETF ,英特网工程工作小组)的可
实行文档(working document),它的范围,及它的工作团队. 要注意其他团队也可能在发布可实行文档作为
英特网草案.
因特网草案(Internet-Draft)是最多6个月内有效的草案文档,且有可能在任何时候升级, 替换或被其他文
档废弃.用英特网草案作参考资料或引用它们(除了"工作进展中")都不合适.
现有的英特网草案(Internet-Draft)名单可以在 <http://www.ietf.org/ietf/1id-abstracts.txt> 取得
.
因特网草案阴子目录(Internet-Draft Shadow Directories)列表可以在
<http://www.ietf.org/shadow.html> 取得.
本因特网草案(Internet-Draft)将在2006年2月到期.
Copyright Notice [ 版权声明 ]
Copyright ? The Internet Society (2005). All Rights Reserved.
摘要
本文档详细说明 Atom -- 一种基于 XML 的 网络内容和元数据(metadata)联合格式.
Table of Contents [ 目录 ]
1. ? Introduction [ 介绍 ]
1.1 ? Examples [ 示例 ]
1.2 ? Namespace and Version [ 命名空间及版本 ]
1.3 ? Notational Conventions [ 符号约定 ]
2. ? Atom Documents [ Atom 文档 ]
3. ? Common Atom Constructs [ 通用 Atom 结构 ]
3.1 ? Text Constructs [ 文本结构 ]
3.1.1 ? The "type" Attribute [ "type" 属性 ]
3.2 ? Person Constructs [ 个体结构 ]
3.2.1 ? The "atom:name" Element [ "atom:name" 元素 ]
3.2.2 ? The "atom:uri" Element [ "atom:uri" 元素 ]
3.2.3 ? The "atom:email" Element [ "atom:email" 元素 ]
3.3 ? Date Constructs [ 时间结构 ]
4. ? Atom Element Definitions [ Atom 元素定义 ]
4.1 ? Container Elements [ 外壳元素 ]
4.1.1 ? The "atom:feed" Element [ "atom:feed" 元素 ]
4.1.2 ? The "atom:entry" Element [ "atom:entry" 元素 ]
4.1.3 ? The "atom:content" Element [ "atom:content" 元素 ]
4.2 ? Metadata Elements [ 元数据元素 ]
4.2.1 ? The "atom:author" Element [ "atom:author" 元素 ]
4.2.2 ? The "atom:category" Element [ "atom:category" 元素 ]
4.2.3 ? The "atom:contributor" Element [ "atom:contributor" 元素 ]
4.2.4 ? The "atom:generator" Element [ "atom:generator" 元素 ]
4.2.5 ? The "atom:icon" Element [ "atom:icon" 元素 ]
4.2.6 ? The "atom:id" Element [ "atom:id" 元素 ]
4.2.7 ? The "atom:link" Element [ "atom:link" 元素 ]
4.2.8 ? The "atom:logo" Element [ "atom:logo" 元素 ]
4.2.9 ? The "atom:published" Element [ "atom:published" 元素 ]
4.2.10 ? The "atom:rights" Element [ "atom:rights" 元素 ]
4.2.11 ? The "atom:source" Element [ "atom:source" 元素 ]
4.2.12 ? The "atom:subtitle" Element [ "atom:subtitle" 元素 ]
4.2.13 ? The "atom:summary" Element [ "atom:summary" 元素 ]
4.2.14 ? The "atom:title" Element [ "atom:title" 元素 ]
4.2.15 ? The "atom:updated" Element [ "atom:updated" 元素 ]
5. ? Securing Atom Documents [ 可靠的 Atom 文档 ]
6. ? Extending Atom [ 扩展 Atom ]
7. ? IANA Considerations [ IANA 因素 ]
8. ? Security Considerations [ 安全因素 ]
9. ? References [ 参考文献 ]
9.1 ? Normative References [ 规范参考 ]
9.2 ? Informative References [ 资料参考 ]
Authors' Addresses [ 作者地址 ]
A. ? Contributors [ 贡献者 ]
B. ? RELAX NG Compact Schema [ RELAX NG 紧凑模式 ]
C. ? Change Log [ 变更记录 ]
Intellectual Property and Copyright Statements [ 知识产权及版权声明 ]
--------------------------------------------------------------------------------
1. Introduction [ 介绍 ]
Atom 是基于 XML 的记述相关信息(即熟知的 "feed")的列表的文档格式. Feed 由一定数量的 item (即
entry ,条目)组成,每个条目都有一组可扩展的附属元数据(metadata).比如说,每个条目都有一个标题
(title).
Atom 从事的主要应用事例是网络内容 -- 如网络日志(weblog)和新闻标题 -- 的联合,给网站也直接给用
户代理程序.
1.1 Examples [ 示例 ]
一个简单的单条目的 Atom Feed 文档:
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Example Feed</title>
<link href="http://example.org/%22/>
<updated>2003-12-13T18:30:02Z</updated>
<author>
<name>John Doe</name>
</author>
<id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>
<entry>
<title>Atom-Powered Robots Run Amok</title>
<link href="http://example.org/2003/12/13/atom03%22/>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
<updated>2003-12-13T18:30:02Z</updated>
<summary>Some text.</summary>
</entry>
</feed>
一个更详尽的单条目的 Atom Feed 文档:
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">dive into mark</title>
<subtitle type="html">
A <em>lot</em> of effort went into making this effortless
</subtitle>
<updated>2005-07-31T12:29:29Z</updated>
<id>tag:example.org,2003:3</id>
<link rel="alternate" type="text/html" hreflang="en" href="http://example.org/%22/>
<link rel="self" type="application/atom+xml" href="http://example.org/feed.atom%22/>
<rights>Copyright (c) 2003, Mark Pilgrim</rights>
<generator uri="http://www.example.com/" version="1.0">
Example Toolkit
</generator>
<entry>
<title>Atom draft-07 snapshot</title>
<link rel="alternate" type="text/html" href="http://example.org/2005/04/02/atom%22/>
<link rel="enclosure" type="audio/mpeg" length="1337"
href="http://example.org/audio/ph34r_my_podcast.mp3%22/>
<id>tag:example.org,2003:3.2397</id>
<updated>2005-07-31T12:29:29Z</updated>
<published>2003-12-13T08:29:29-04:00</published>
<author>
<name>Mark Pilgrim</name>
<uri>http://example.org/</uri>
<email>f8dy@example.com</email>
</author>
<contributor>
<name>Sam Ruby</name>
</contributor>
<contributor>
<name>Joe Gregorio</name>
</contributor>
<content type="xhtml" xml:lang="en" xml:base="http://diveintomark.org/">
<div xmlns="http://www.w3.org/1999/xhtml">
<p><i>[Update: The Atom draft is finished.]</i></p>
</div>
</content>
</entry>
</feed>
1.2 Namespace and Version [ 命名空间及版本 ]
本规范所描述的 XML 数据格式的 XML 命名空间(namespace) [W3C.REC-xml-names-19990114] URI 是:
http://www.w3.org/2005/Atom
为方便起见,这种数据格式可以被称为 "Atom 1.0",在本规范中使用 "Atom".
1.3 Notational Conventions [ 符号约定 ]
本规范描述上跟两个旧本(Atom Feed 文档和 Atom 条目文档)在措辞上顺应一致. 另外它寄予 Atom 处理
程序一些必要的条件.
本规范为上面 1.2 章节确立的命名空间(namespace) URI 使用 "atom:" 命名空间前缀.注意命名空间前
缀的选择是任意的,并无语义上的特殊意义.
Atom 被指定使用来自 XML Infoset [W3C.REC-xml-infoset-20040204] 的术语. 不过本规范给两个通用
术语使用简写:当提到 Element Information Item (元素信息条目)和 Attribute Information Item (属
性信息条目)时将省略 "Information Item" 短语.所以当本文档使用术语 "element" 时,它实际提到的是
Infoset 术语中的 Element Information Item (元素信息条目).同样的,当它使用 "attribute" 术语时,
实际指的是 Attribute Information Item (属性信息条目).
本规范的某些章节用非标准化的 RELAX NG 紧凑模式 [RELAX-NG] 的片段进行举例说明.不过本规范的正
文(text)提供了一致性(conformance)的定义.完整的模式在 附录?B 中.
本文中的 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT",
"RECOMMENDED", "MAY", 和 "OPTIONAL" 关键词将如 BCP 14, [RFC2119] 中所写的那样解释,已达到那些
一致性的目的.
--------------------------------------------------------------------------------
2. Atom Documents [ Atom 文档 ]
本规范描述两种 Atom 文档; Atom Feed 文档 及 Atom 条目文档.
Atom Feed 文档是一个 Atom feed 的陈述,包含关于该 feed 的元数据,及和它关联的一些或全部条目.它
的根是 atom:feed 元素.
Atom 条目文档精确的描述一个在 Atom feed 之外的 Atom 条目.它的根是 atom:entry 元素.
namespace atom = "http://www.w3.org/2005/Atom"
start = atomFeed | atomEntry
这两种 Atom 文档都被指定使用 XML Information Set 的措辞,按 XML 1.0 [W3C.REC-xml-20040204] 的
形式连续化,且被视同与 "application/atom+xml" 媒体类型.Atom 文档必须是合格的 XML 文件.本规范
并未给 Atom 文档定义一个 DTD ,因此也并不要求它们(在用 XML 意义上)有根有据.
Atom 允许使用 IRI [RFC3987] .所有的 URI [RFC3986] 也都是 IRI ,所以 URI 可以使用在任何 IRI 被
指定使用的地方.但要考虑到两个特殊之处:当一个 非 URI 的 IRI 被作为间接引用时,它必须用
[RFC3987] 3.1 章节上的步骤映射到一个 URI 上;当一个 IRI 作 atom:id 的值时,则绝不可做这样的映
射,以便使对照关系(comparison)如 4.2.6.1 章节 所说的那样运转.
本规范定义的任一个元素都可以有一个 xml:base 属性 [W3C.REC-xmlbase-20010627] .当 Atom 文档中
用到 xml:base 时,它起到如 [RFC3986] 中 5.1.1 章节所说的作用,建立根 URI (或 IRI)以解析
xml:base 属性有效范围内找到的相对应用.
本规范定义的任一个元素都可以有一个 xml:lang 属性,以指示该元素及其派生元素使用的自然语言.语言
背景仅对本规范声明的"语言敏感"的元素和属性有意义.关于 xml:lang 的内容和解释的要求在 XML 1.0
[W3C.REC-xml-20040204], 2.12 章节中有详细说明.
atomCommonAttributes =
attribute xml:base { atomUri }?,
attribute xml:lang { atomLanguageTag }?,
undefinedAttribute*
Atom 是个可扩展的格式.关于如何扩展 Atom 文档的详细描述请见本文的第6章节.
Atom 处理程序可能会保持来自 Atom Feed 文档的资料状态并把它和其他 Atom Feed 文档合并在一起,以
便连续地查看同一 Atom 源(feed)的内容.合并 Atom Feed 文档以修复 Atom 源(feed)(如更新条目及元
数据,处理缺失的条目)的方法不在本规范说明范围内.
--------------------------------------------------------------------------------
3. Common Atom Constructs [ 通用 Atom 结构 ]
许多 Atom 的元素共享一些通用的结构.本章详细说明那些结构及它们的需要情况(requirement)以在合适
的元素定义上方便引用.
当一个元素被视作有一种特别的结构时,它将继承本章节中该结构定义的相应的需要情况(requirement).
注意在数据结构或任何 IRI 中绝不能有任何空白字符.有些 XML 发布工具错误地默认地在值周围插入空
白符,而这些程序发表的将是不合格的 Atom 文档.
3.1 Text Constructs [ 文本结构 ]
A Text construct contains human-readable text, usually in small quantities. The content of
Text constructs is Language-Sensitive.
一个文本结构包含了通俗易懂的文字信息,通常只是一小段.文本结构的内容是语言敏感的(Language-
Sensitive).
atomPlainTextConstruct =
atomCommonAttributes,
attribute type { "text" | "html" }?,
text
atomXHTMLTextConstruct =
atomCommonAttributes,
attribute type { "xhtml" },
xhtmlDiv
atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct
3.1.1 The "type" Attribute [ "type" 属性 ]
文本结构可能有一个 "type" 属性.如果存在,则值必须是 "text", "html" 或 "xhtml" 中的一个,如果没
有提供 "type" 属性, Atom 处理程序必须视它有一个 "text" 的值.不同于 4.1.3 章节定义的
atom:content 元素,MIME 媒介类型 [MIMEREG] 绝不可作为文本结构的 "type" 属性的值.
3.1.1.1 Text
Example atom:title with text content:
例有文本内容的 atom:title 元素:
...
<title type="text">
Less: <
</title>
...
如果值是 "text" ,该文本结构的内容绝不能包含子元素.这样的文字呈现给人们看时还多多少少容易懂些
.不过这样一来, Atom 处理程序可能会把空白符(包括换行符)紧凑合并在一块,并用印刷上的技巧(如用调
整和均衡字体)来显示那段文字.
3.1.1.2 HTML
Example atom:title with HTML content:
例有 HTML 内容的 atom:title 元素:
...
<title type="html">
Less: <em> &lt; </em>
</title>
...
如果 "type" 的值为 "html" ,文本结构的内容绝不能包含子元素,且应当适合作为 HTML [HTML] 来处理.
其内的所有置标(markup)必须转义处理,如 "<br>" 作 "<br>" 处理.其内的 HTML 置标也应当这样以
使它能在反转义之后直接在一个 HTML <DIV> 元素中有效地呈现出来.显示该内容的 Atom 处理程序可能
使用那些置标以帮助它的显示.
3.1.1.3 XHTML
Example atom:title with XHTML content:
例有 XHTML 内容的 atom:title 元素:
...
<title type="xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xhtml:div>
Less: <xhtml:em> < </xhtml:em>
</xhtml:div>
</title>
...
如果 "type" 的值为 "xhtml" ,文本结构的内容必须是单个的 XHTML div 元素 [XHTML] ,且应当适合作
为 XHTML 来处理. XHTML div 元素本身绝不能被视作是内容的一部分.显示该内容的 Atom 处理程序可能
使用置标(markup)来帮助它的显示.如 "&" 和 ">" 字符转义过的译文仍然显示那些字符,而不是置标.
Examples of valid XHTML content:
有效的 XHTML 内容的例子:
...
<summary type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
This is <b>XHTML</b> content.
</div>
</summary>
...
<summary type="xhtml">
<xhtml:div xmlns:xhtml="http://www.w3.org/1999/xhtml">
This is <xhtml:b>XHTML</xhtml:b> content.
</xhtml:div>
</summary>
下面的例子假定文档中 XHTML 命名空间一定要以 "xh" 前缀开始:
...
<summary type="xhtml">
<xh:div>
This is <xh:b>XHTML</xh:b> content.
</xh:div>
</summary>
...
3.2 Person Constructs [ 个体结构 ]
个体结构是描述个人,社团,或类似条目(此后,'个人')的元素.
atomPersonConstruct =
atomCommonAttributes,
(element atom:name { text }
& element atom:uri { atomUri }?
& element atom:email { atomEmailAddress }?
& extensionElement*)
个体结构子元素的出现次序无关紧要.个体结构允许扩展的元数据元素(见 第 6.4 章节).
3.2.1 The "atom:name" Element [ "atom:name" 元素 ]
"atom:name" 元素的内容告知了该个体的易懂的名字. atom:name 的内容是语言敏感的(Language-
Sensitive).个体结构必须确切地包含一个 "atom:name" 元素.
3.2.2 The "atom:uri" Element [ "atom:uri" 元素 ]
"atom:uri" 元素的内容告知了一个与该个体相关的 IRI .个体结构可以包含一个 atom:uri 元素,但绝不
能多于一个.个体结构中 atom:uri 的内容必须是一个 IRI 引用 [RFC3987] .
3.2.3 The "atom:email" Element [ "atom:email" 元素 ]
"atom:email" 元素的内容告知了一个与该个体相关的 email 地址.个体结构可以包含一个 atom:email
元素,但绝不能多于一个.它的内容必须符合 [RFC2822] 的 "addr-spec" 作品.
3.3 Date Constructs [ 时间结构 ]
时间结构是内容必须符合 [RFC3339] 的 "date-time" 作品的元素.另外,必须用一个大写的 "T" 来分割
日期和时间,当缺失时区偏量数字时必须以一个大写的 "Z" 结尾.
atomDateConstruct =
atomCommonAttributes,
xsd:dateTime
这样的时间值正巧与下列规格相一致: [ISO.8601.1988] , [W3C.NOTE-datetime-19980827] , 和
[W3C.REC-xmlschema-2-20041028] .
时间结构示例:
<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>
时间值应当尽可能的精确.比如说,一个出版系统把同一个时间戳应用于几个同一天内发布的条目上通常是
不合适的.
参考文献:
http://www.atomenabled.org/developers/syndication/atom-format-spec.php