draft-ietf-atompub-format-06.txt   draft-ietf-atompub-format-07.txt 
Network Working Group M. Nottingham, Ed. Network Working Group M. Nottingham, Ed.
Internet-Draft Internet-Draft R. Sayre, Ed.
Expires: September 13, 2005 R. Sayre, Ed. Expires: October 2, 2005 March 31, 2005
Boswijck Memex Consulting
March 12, 2005
The Atom Syndication Format The Atom Syndication Format
draft-ietf-atompub-format-06 draft-ietf-atompub-format-07
Status of this Memo Status of this Memo
This document is an Internet-Draft and is subject to all provisions This document is an Internet-Draft and is subject to all provisions
of Section 3 of RFC 3667. By submitting this Internet-Draft, each of Section 3 of RFC 3667. By submitting this Internet-Draft, each
author represents that any applicable patent or other IPR claims of author represents that any applicable patent or other IPR claims of
which he or she is aware have been or will be disclosed, and any of which he or she is aware have been or will be disclosed, and any of
which he or she become aware will be disclosed, in accordance with which he or she become aware will be disclosed, in accordance with
RFC 3668. RFC 3668.
skipping to change at page 1, line 37 skipping to change at page 1, line 35
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 13, 2005. This Internet-Draft will expire on October 2, 2005.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2005). Copyright (C) The Internet Society (2005).
Abstract Abstract
This document specifies Atom, an XML-based Web content and metadata This document specifies Atom, an XML-based Web content and metadata
syndication format. syndication format.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Editorial Notes . . . . . . . . . . . . . . . . . . . . . 4 1.1 Examples . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Example . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Notational Conventions . . . . . . . . . . . . . . . . . . 5
1.3 Notational Conventions . . . . . . . . . . . . . . . . . . 5 2. Atom Documents . . . . . . . . . . . . . . . . . . . . . . . 6
2. Atom Documents . . . . . . . . . . . . . . . . . . . . . . . 7 3. Common Atom Constructs . . . . . . . . . . . . . . . . . . . 8
3. Common Atom Constructs . . . . . . . . . . . . . . . . . . . 9 3.1 Text Constructs . . . . . . . . . . . . . . . . . . . . . 8
3.1 Text Constructs . . . . . . . . . . . . . . . . . . . . . 9 3.1.1 The "type" Attribute . . . . . . . . . . . . . . . . . 8
3.1.1 "type" Attribute . . . . . . . . . . . . . . . . . . . 9
3.2 Person Constructs . . . . . . . . . . . . . . . . . . . . 11 3.2 Person Constructs . . . . . . . . . . . . . . . . . . . . 11
3.2.1 The "atom:name" Element . . . . . . . . . . . . . . . 11 3.2.1 The "atom:name" Element . . . . . . . . . . . . . . . 11
3.2.2 The "atom:uri" Element . . . . . . . . . . . . . . . . 11 3.2.2 The "atom:uri" Element . . . . . . . . . . . . . . . . 11
3.2.3 The "atom:email" Element . . . . . . . . . . . . . . . 11 3.2.3 The "atom:email" Element . . . . . . . . . . . . . . . 11
3.3 Date Constructs . . . . . . . . . . . . . . . . . . . . . 11 3.3 Date Constructs . . . . . . . . . . . . . . . . . . . . . 12
4. Atom Element Definitions . . . . . . . . . . . . . . . . . . 13 4. Atom Element Definitions . . . . . . . . . . . . . . . . . . 13
4.1 Container Elements . . . . . . . . . . . . . . . . . . . . 13 4.1 Container Elements . . . . . . . . . . . . . . . . . . . . 13
4.1.1 The "atom:feed" Element . . . . . . . . . . . . . . . 13 4.1.1 The "atom:feed" Element . . . . . . . . . . . . . . . 13
4.1.2 The "atom:entry" Element . . . . . . . . . . . . . . . 14 4.1.2 The "atom:entry" Element . . . . . . . . . . . . . . . 15
4.1.3 The "atom:content" Element . . . . . . . . . . . . . . 16 4.1.3 The "atom:content" Element . . . . . . . . . . . . . . 17
4.2 Metadata Elements . . . . . . . . . . . . . . . . . . . . 19 4.2 Metadata Elements . . . . . . . . . . . . . . . . . . . . 20
4.2.1 The "atom:author" Element . . . . . . . . . . . . . . 19 4.2.1 The "atom:author" Element . . . . . . . . . . . . . . 20
4.2.2 The "atom:category" Element . . . . . . . . . . . . . 20 4.2.2 The "atom:category" Element . . . . . . . . . . . . . 20
4.2.3 The "atom:contributor" Element . . . . . . . . . . . . 20 4.2.3 The "atom:contributor" Element . . . . . . . . . . . . 20
4.2.4 The "atom:copyright Element . . . . . . . . . . . . . 20 4.2.4 The "atom:copyright" Element . . . . . . . . . . . . . 21
4.2.5 The "atom:generator" Element . . . . . . . . . . . . . 21 4.2.5 The "atom:generator" Element . . . . . . . . . . . . . 21
4.2.6 The "atom:icon" Element . . . . . . . . . . . . . . . 21 4.2.6 The "atom:icon" Element . . . . . . . . . . . . . . . 21
4.2.7 The "atom:id" Element . . . . . . . . . . . . . . . . 21 4.2.7 The "atom:id" Element . . . . . . . . . . . . . . . . 22
4.2.8 The "atom:image" Element . . . . . . . . . . . . . . . 23 4.2.8 The "atom:image" Element . . . . . . . . . . . . . . . 23
4.2.9 The "atom:link" Element . . . . . . . . . . . . . . . 23 4.2.9 The "atom:link" Element . . . . . . . . . . . . . . . 24
4.2.10 The "atom:published" Element . . . . . . . . . . . . 26 4.2.10 The "atom:published" Element . . . . . . . . . . . . 26
4.2.11 The "atom:source-feed" Element . . . . . . . . . . . 26 4.2.11 The "atom:source" Element . . . . . . . . . . . . . 26
4.2.12 The "atom:subtitle" Element . . . . . . . . . . . . 26 4.2.12 The "atom:subtitle" Element . . . . . . . . . . . . 27
4.2.13 The "atom:summary" Element . . . . . . . . . . . . . 27 4.2.13 The "atom:summary" Element . . . . . . . . . . . . . 27
4.2.14 The "atom:title" Element . . . . . . . . . . . . . . 27 4.2.14 The "atom:title" Element . . . . . . . . . . . . . . 27
4.2.15 The "atom:updated" Element . . . . . . . . . . . . . 27 4.2.15 The "atom:updated" Element . . . . . . . . . . . . . 27
5. Securing Atom Documents . . . . . . . . . . . . . . . . . . 28 5. Securing Atom Documents . . . . . . . . . . . . . . . . . . 29
5.1 Digital Signatures . . . . . . . . . . . . . . . . . . . . 28 6. Extending Atom . . . . . . . . . . . . . . . . . . . . . . . 30
5.2 Encryption . . . . . . . . . . . . . . . . . . . . . . . . 28 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . 32
6. Extending Atom . . . . . . . . . . . . . . . . . . . . . . . 29 8. Security Considerations . . . . . . . . . . . . . . . . . . 34
6.1 Extensions From Non-Atom Vocabularies . . . . . . . . . . 29 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.2 Extensions To the Atom Vocabulary . . . . . . . . . . . . 29 9.1 Normative References . . . . . . . . . . . . . . . . . . . 35
6.3 Software Processing of Foreign Markup . . . . . . . . . . 29 9.2 Informative References . . . . . . . . . . . . . . . . . . 36
6.4 Extension Elements . . . . . . . . . . . . . . . . . . . . 29 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 37
6.4.1 Simple Extension Elements . . . . . . . . . . . . . . 30 A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 38
6.4.2 Structured Extension Elements . . . . . . . . . . . . 30 B. Collected RELAX NG Compact Schema . . . . . . . . . . . . . 39
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . 31 C. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.1 Registry of Link Relations . . . . . . . . . . . . . . . . 31 Intellectual Property and Copyright Statements . . . . . . . 50
8. Security Considerations . . . . . . . . . . . . . . . . . . 33
8.1 HTML and XHTML Content . . . . . . . . . . . . . . . . . . 33
8.2 URIs . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.3 IRIs . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.4 Encryption and Signing . . . . . . . . . . . . . . . . . . 33
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 34
9.1 Normative References . . . . . . . . . . . . . . . . . . . 34
9.2 Informative References . . . . . . . . . . . . . . . . . . 35
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 36
A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 37
B. Collected RELAX NG Compact Schema . . . . . . . . . . . . . 38
C. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 45
Intellectual Property and Copyright Statements . . . . . . . 48
1. Introduction 1. Introduction
Atom is an XML-based document format that describes lists of related Atom is an XML-based document format that describes lists of related
information known as "feeds". Feeds are composed of a number of information known as "feeds". Feeds are composed of a number of
items, known as "entries", each with an extensible set of attached items, known as "entries", each with an extensible set of attached
metadata. For example, each entry has a title. metadata. For example, each entry has a title.
The primary use case that Atom addresses is the syndication of Web The primary use case that Atom addresses is the syndication of Web
content such as Weblogs and news headlines to Web sites as well as content such as Weblogs and news headlines to Web sites as well as
directly to user agents. However, nothing precludes it from being directly to user agents. However, nothing precludes it from being
used for other purposes and kinds of content. used for other purposes and kinds of content.
1.1 Editorial Notes 1.1 Examples
The Atom format is a work-in-progress, and this draft is both
incomplete and likely to change rapidly. As a result, THE FORMAT
DESCRIBED BY THIS DRAFT SHOULD NOT BE DEPLOYED, either in production
systems or in any non-experimental fashion on the Internet.
Discussion of this draft happens in two fora;
The mailing list <http://www.imc.org/atom-syntax/index.html>
The Atom Wiki Web site
<http://www.intertwingly.net/wiki/pie/FrontPage>
Active development takes place on the mailing list, while the Wiki is
used for issue tracking and new proposals.
1.2 Example
A minimal, single-entry Atom Feed Document: A minimal, single-entry Atom Feed Document:
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="utf-8"?>
<feed <feed xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-07">
xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-06">
<title>Example Feed</title> <title>Example Feed</title>
<link href="http://example.org/"/> <link href="http://example.org/"/>
<updated>2003-12-13T18:30:02Z</updated> <updated>2003-12-13T18:30:02Z</updated>
<author> <author>
<name>John Doe</name> <name>John Doe</name>
</author> </author>
<entry> <entry>
<title>Atom-Powered Robots Run Amok</title> <title>Atom-Powered Robots Run Amok</title>
<link href="http://example.org/2003/12/13/atom03"/> <link href="http://example.org/2003/12/13/atom03"/>
<id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
<updated>2003-12-13T18:30:02Z</updated> <updated>2003-12-13T18:30:02Z</updated>
<content>Some text.</content>
</entry> </entry>
</feed>
[[anchor4: Ask yourself: is the example atom:entry valid?]] </feed>
A more extensive, single-entry Atom Feed Document:
1.3 Notational Conventions <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-07">
<title type="text">dive into mark</title>
<subtitle type="html">
A &lt;em&gt;lot&lt;/em&gt; of effort
went into making this effortless
</subtitle>
<updated>2005-04-02T12:29:29Z</updated>
<id>tag:example.org,2003:3</id>
<link rel="alternate" type="text/html"
hreflang="en" href="http://example.org/"/>
<copyright>Copyright (c) 2003, Mark Pilgrim</copyright>
<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"/>
<link rel="enclosure" type="audio/mpeg" length="1337"
href="http://example.org/audio/ph34r_my_podcast.mp3"/>
<id>tag:example.org,2003:3.2397</id>
<updated>2005-04-02T12: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>
<uri>http://intertwingly.net/blog/</uri>
</contributor>
<contributor>
<name>Joe Gregorio</name>
<uri>http://bitworking.org/</uri>
</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-07 snapshot is out.]</i></p>
</div>
</content>
</entry>
</feed>
This specification describes conformance in terms of two kinds of 1.2 Notational Conventions
artefacts; Atom Feed Documents and Atom Entry documents.
Additionally, it places some requirements on Atom Processors.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", This specification describes conformance in terms of two artifacts;
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this Atom Feed Documents and Atom Entry documents. Additionally, it
document are to be interpreted as described in BCP 14, [RFC2119], as places some requirements on Atom Processors.
scoped to those conformance targets.
This specification uses XML Namespaces [W3C.REC-xml-names-19990114] This specification uses XML Namespaces [W3C.REC-xml-names-19990114]
to uniquely identify XML elements names. It uses the following to uniquely identify XML element names. It uses the following
namespace prefixes for the indicated namespace URIs; namespace prefix for the indicated namespace URI;
"atom": http://purl.org/atom/ns#draft-ietf-atompub-format-06 "atom": http://purl.org/atom/ns#draft-ietf-atompub-format-07
Note that the choice of any namespace prefix is arbitrary and not Note that the choice of any namespace prefix is arbitrary and not
semantically significant. semantically significant.
Atom is specified using terms from the XML Infoset Atom is specified using terms from the XML Infoset
[W3C.REC-xml-infoset-20040204]. However, this specification uses a [W3C.REC-xml-infoset-20040204]. However, this specification uses a
shorthand for two common terms; the phrase "Information Item" is shorthand for two common terms; the phrase "Information Item" is
omitted when naming Element Information Items and Attribute omitted when naming Element Information Items and Attribute
Information Items. Information Items.
Therefore, when this specification uses the term "element," it is Therefore, when this specification uses the term "element," it is
referring to an Element Information Item in Infoset terms. Likewise, referring to an Element Information Item in Infoset terms. Likewise,
when it uses the term "attribute," it is referring to an Attribute when it uses the term "attribute," it is referring to an Attribute
Information Item. Information Item.
Some sections of this specification are illustrated with fragments of Some sections of this specification are illustrated with fragments of
a non-normative RELAX NG Compact schema [RELAX-NG]. However, the a non-normative RELAX NG Compact schema [RELAX-NG]. However, the
text of this specification provides the definition of conformance. A text of this specification provides the definition of conformance. A
collected schema appears in an informative appendix. collected schema appears in Appendix B.
Some sections of this specification are illustrated with Augmented
Backus-Naur Form (ABNF), a format used to represent permissible
strings in a protocol or language, as defined in [RFC2234].
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14, [RFC2119], as
scoped to those conformance targets.
2. Atom Documents 2. Atom Documents
This specification describes two kinds of Atom Documents; Atom Feed This specification describes two kinds of Atom Documents; Atom Feed
Documents and Atom Entry Documents. Documents and Atom Entry Documents.
An Atom Feed Document is a representation of an Atom feed, including An Atom Feed Document is a representation of an Atom feed, including
metadata about the feed, and some or all of the entries associated metadata about the feed, and some or all of the entries associated
with it. Its root is the atom:feed element. with it. Its root is the atom:feed element.
An Atom Entry Document represents exactly one Atom Entry, outside of An Atom Entry Document represents exactly one Atom entry, outside of
the context of an Atom Feed. Its root is the atom:entry element. the context of an Atom feed. Its root is the atom:entry element.
namespace
atom ="http://purl.org/atom/ns#draft-ietf-atompub-format-06"
namespace atom =
"http://purl.org/atom/ns#draft-ietf-atompub-format-07"
start = atomFeed | atomEntry start = atomFeed | atomEntry
Both kinds of Atom documents are specified in terms of the XML Both kinds of Atom documents are specified in terms of the XML
Information Set, serialised as XML 1.0 [W3C.REC-xml-20040204] and Information Set, serialised as XML 1.0 [W3C.REC-xml-20040204] and
identified with the "application/atom+xml" media type. Atom identified with the "application/atom+xml" media type. Atom
Documents MUST be well-formed XML. Documents MUST be well-formed XML.
Atom constrains the appearance and content of elements and Atom constrains the appearance and content of elements and
attributes; unless otherwise stated, Atom Documents MAY contain other attributes; unless otherwise stated, Atom Documents MAY contain other
Information Items as appropriate. In particular, Comment Information Information Items as appropriate.
Items and Processing Instruction Information Items SHOULD be ignored
in the normal processing of an Atom Document.
Any element in an Atom Document MAY have an xml:base attribute. XML Any element defined by this specification MAY have an xml:base
Base [W3C.REC-xmlbase-20010627] processing MUST be applied to any attribute. XML Base [W3C.REC-xmlbase-20010627] processing MUST be
relative reference [RFC3987] present in an Atom Document. This applied to any relative reference [RFC3987] present in an Atom
includes such elements and attributes as specified by Atom itself, as Document. This includes such elements and attributes as specified by
well as those specified by extensions to Atom. Atom itself, as well as those specified by extensions to Atom.
Any element in an Atom Document MAY have an xml:lang attribute, whose Any element defined by this specification MAY have an xml:lang
content indicates the natural language for the element and its attribute, whose content indicates the natural language for the
children. The language context is only significant for elements and element and its children. The language context is only significant
attributes declared to be "language-sensitive" by this specification. for elements and attributes declared to be "language-sensitive" by
Requirements regarding the content and interpretation of xml:lang are this specification. Requirements regarding the content and
specified in XML 1.0 [W3C.REC-xml-20040204], Section 2.12. interpretation of xml:lang are specified in XML 1.0
[W3C.REC-xml-20040204], Section 2.12.
atomCommonAttributes = atomCommonAttributes =
attribute xml:base { atomUri }?, attribute xml:base { atomUri }?,
attribute xml:lang { atomLanguageTag }? attribute xml:lang { atomLanguageTag }?
Atom allows the use of IRIs [RFC3987], rather than only URIs Atom allows the use of IRIs [RFC3987], as well as URIs [RFC3986].
[RFC3986]. For resolution, IRIs can easily be converted to URIs. For resolution, IRIs can easily be converted to URIs. When comparing
When comparing IRIs serving as Identity Constructs, they MUST NOT be IRIs serving as atom:id values, they MUST NOT be converted to URIs.
converted to URIs. Please note that by definition, every URI is an By definition, every URI is an IRI, so any URI can be used where an
IRI, so any URI can be used where an IRI is needed. IRI is needed.
[[anchor7: discussion of white space]]
Atom is an extensible format. See the section titled 'Extending Atom is an extensible format. See the section titled 'Extending
Atom' later in this document for a full description of how Atom Atom' later in this document for a full description of how Atom
Documents can be extended. Documents can be extended.
Atom Processors MAY keep state (e.g., metadata in atom:feed, entries) Atom Processors MAY keep state (e.g., metadata in atom:feed, entries)
sourced from Atom Feed Documents and combine them with other Atom sourced from Atom Feed Documents and combine them with other Atom
Feed Documents, in order to facilitate a contiguous view of the Feed Documents, in order to facilitate a contiguous view of the
contents of a feed. The manner in which Atom Feed Documents are contents of a feed. The manner in which Atom Feed Documents are
combined in order to reconstruct a feed (e.g., updating entries and combined in order to reconstruct a feed (e.g., updating entries and
metadata, dealing with missing entries) is out of the scope of this metadata, dealing with missing entries) is out of the scope of this
specification, but may be defined by an extension to Atom. specification, but may be defined by an extension to Atom.
3. Common Atom Constructs 3. Common Atom Constructs
Many of Atom's elements share a few common structures. This section Many of Atom's elements share a few common structures. This section
defines a few such structures and their requirements for convenient defines those structures and their requirements for convenient
reference by the appropriate element definitions. reference by the appropriate element definitions.
When an element is identified as being a particular kind of When an element is identified as being a particular kind of
construct, it inherits the corresponding requirements from that construct, it inherits the corresponding requirements from that
construct's definition in this section. construct's definition in this section.
3.1 Text Constructs 3.1 Text Constructs
A Text construct contains human readable text, usually in small A Text construct contains human-readable text, usually in small
quantities. Except for the "type" attribute, the content of Text quantities. The content of Text constructs is language-sensitive.
constructs is language-sensitive.
atomPlainTextConstruct = atomPlainTextConstruct =
atomCommonAttributes, atomCommonAttributes,
attribute type { "text" | "html" }?, attribute type { "text" | "html" }?,
text text
atomXHTMLTextConstruct = atomXHTMLTextConstruct =
atomCommonAttributes, atomCommonAttributes,
attribute type { "xhtml" }, attribute type { "xhtml" },
(text|anyElement)* xhtmlDiv
atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct
3.1.1 "type" Attribute 3.1.1 The "type" Attribute
Text constructs MAY have a "type" attribute. [[anchor11: Some feel Text constructs MAY have a "type" attribute. When present, the value
type attributes with different allowable values in different elements MUST be one of "text", "html" or "xhtml". If the "type" attribute is
is confusing.]]. When present, the value MUST be one of "text", not provided, Atom Processors MUST behave as though it were present
"html" or "xhtml". If the "type" attribute is not provided, Atom with a value of "text".
Processors MUST behave as though it were present with a value of
"text".
Note that MIME media types [RFC2045] are not acceptable values for Note that MIME media types [RFC2045] are not acceptable values for
the "type" attribute. the "type" attribute.
3.1.1.1 Text
Example atom:title with text content:
...
<title type="text">
Less: &lt;
</title>
...
If the value is "text", the content of the Text construct MUST NOT If the value is "text", the content of the Text construct MUST NOT
contain child elements. Such text is intended to be presented to contain child elements. Such text is intended to be presented to
humans in a readable fashion. Thus, Atom Processors MAY display it humans in a readable fashion. Thus, Atom Processors MAY display it
using normal text rendering techniques such as proportional fonts, using normal text rendering techniques such as proportional fonts,
white-space collapsing, and justification. white-space collapsing, and justification.
3.1.1.2 HTML
Example atom:title with HTML content:
...
<title type="html">
Less: &lt;em> &amp;lt; &lt;/em>
</title>
...
If the value of "type" is "html", the content of the Text construct If the value of "type" is "html", the content of the Text construct
MUST NOT contain child elements, and SHOULD be suitable for handling MUST NOT contain child elements, and SHOULD be suitable for handling
as HTML [W3C.REC-html401-19991224]. Any markup within MUST be as HTML [W3C.REC-html401-19991224]. Any markup within MUST be
escaped; for example, "<br>" as "&lt;br>". HTML markup within SHOULD escaped; for example, "<br>" as "&lt;br>". HTML markup within SHOULD
be such that it could validly appear directly within an HTML <DIV> be such that it could validly appear directly within an HTML <DIV>
element, after unescaping. Atom Processors that display such content element, after unescaping. Atom Processors that display such content
MAY use markup to aid in its display. MAY use that markup to aid in its display.
[[anchor12: example atom entry w/ escaped markup]] 3.1.1.3 XHTML
Example atom:title with XHTML content:
...
<title type="xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xhtml:div>
Less: <xhtml:em> &lt; </xhtml:em>
</xhtml:div>
</title>
...
If the value of "type" is "xhtml", the content of the Text construct If the value of "type" is "xhtml", the content of the Text construct
MUST be a single XHTML div element [W3C.REC-xhtml-basic-20001219]. MUST be a single XHTML div element [W3C.REC-xhtml-basic-20001219].
The XHTML div MUST contain XHTML text and markup that could validly The XHTML div MUST contain XHTML text and markup that could validly
appear within an XHTML div element. The XHTML div element itself appear within an XHTML div element. The XHTML div element itself
MUST NOT be considered part of the content. Atom Processors which MUST NOT be considered part of the content. Atom Processors which
display the content MAY use the markup to aid in displaying it. display the content MAY use the markup to aid in displaying it.
Escaped markup is interpreted as a text representation of markup, and Escaped characters, such as "&" and ">", represent those characters,
MUST NOT be interpreted as markup itself. not markup.
Example: Examples of valid XHTML content:
... ...
<summary type="xhtml"> <summary type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml"> <div xmlns="http://www.w3.org/1999/xhtml">
This is <b>XHTML</b> content. This is <b>XHTML</b> content.
</div> </div>
</summary> </summary>
... ...
<summary type="xhtml"> <summary type="xhtml">
<xhtml:div xmlns:xhtml="http://www.w3.org/1999/xhtml"> <xhtml:div xmlns:xhtml="http://www.w3.org/1999/xhtml">
skipping to change at page 11, line 10 skipping to change at page 11, line 10
This is <xh:b>XHTML</xh:b> content. This is <xh:b>XHTML</xh:b> content.
</xh:div> </xh:div>
</summary> </summary>
... ...
3.2 Person Constructs 3.2 Person Constructs
A Person construct is an element that describes a person, A Person construct is an element that describes a person,
corporation, or similar entity (hereafter, 'person'). corporation, or similar entity (hereafter, 'person').
Person constructs MAY be extended by namespace-qualified element
children.
This specification assigns no significance to the order of appearance
of the child elements in a Person construct.
atomPersonConstruct = atomPersonConstruct =
atomCommonAttributes, atomCommonAttributes,
(element atom:name { text } & (element atom:name { text }
element atom:uri { atomUri }? & & element atom:uri { atomUri }?
element atom:email { atomEmailAddress }?) & element atom:email { atomEmailAddress }?
& extensionElement*)
This specification assigns no significance to the order of appearance
of the child elements in a Person construct. Person constructs allow
extension Metadata Elements (see Section 6.4).
3.2.1 The "atom:name" Element 3.2.1 The "atom:name" Element
The "atom:name" element's content conveys a human-readable name for The "atom:name" element's content conveys a human-readable name for
the person. The content of atom:name is language sensitive. Person the person. The content of atom:name is language-sensitive. Person
constructs MUST contain exactly one "atom:name" element. constructs MUST contain exactly one "atom:name" element.
3.2.2 The "atom:uri" Element 3.2.2 The "atom:uri" Element
The "atom:uri" element's content conveys an IRI associated with the The "atom:uri" element's content conveys an IRI associated with the
person. Person constructs MAY contain an atom:uri element, but MUST person. Person constructs MAY contain an atom:uri element, but MUST
NOT contain more than one. The content of atom:uri in a Person NOT contain more than one. The content of atom:uri in a Person
construct MUST be an IRI reference [RFC3987]. construct MUST be an IRI reference [RFC3987].
xml:base [W3C.REC-xmlbase-20010627] processing MUST be applied to the
atom:uri element's content.
3.2.3 The "atom:email" Element 3.2.3 The "atom:email" Element
The "atom:email" element's content conveys an e-mail address The "atom:email" element's content conveys an e-mail address
associated with the person. Person constructs MAY contain an associated with the person. Person constructs MAY contain an
atom:email element, but MUST NOT contain more than one. Its content atom:email element, but MUST NOT contain more than one. Its content
MUST conform to the addr-spec BNF rule in [RFC2822]. MUST conform to the addr-spec BNF rule in [RFC2822].
3.3 Date Constructs 3.3 Date Constructs
A Date construct is an element whose content MUST conform to the A Date construct is an element whose content MUST conform to the
date-time BNF rule in [RFC3339]. I.e., the content of this element extended date-time form ABNF rule in [RFC3339]. In addition, an
matches this regular expression: uppercase "T" character MUST be used to separate date and time, and
an uppercase "Z" character MUST be present in the absence of a
[0-9]{8}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\.[0-9]+) numeric time zone offset.
?(Z|[\+\-][0-9]{2}:[0-9]{2})
As a result, the date values conform to the following specifications:
[RFC3339], [W3C.REC-xmlschema-2-20041028],
[W3C.NOTE-datetime-19980827], and [ISO.8601.1988].
atomDateConstruct = atomDateConstruct =
atomCommonAttributes, atomCommonAttributes,
xsd:dateTime xsd:dateTime
Such date values happen to be compatible with the following
specifications: [ISO.8601.1988], [W3C.NOTE-datetime-19980827], and
[W3C.REC-xmlschema-2-20041028].
Date values SHOULD be as accurate as possible. For example, it would
be generally inappropriate for a publishing system to apply the same
timestamp to several entries which were published during the course
of a single day.
4. Atom Element Definitions 4. Atom Element Definitions
4.1 Container Elements 4.1 Container Elements
4.1.1 The "atom:feed" Element 4.1.1 The "atom:feed" Element
[[anchor21: Substantially changed from format-05, review carefully.]]
The "atom:feed" element is the document (i.e., top-level) element of The "atom:feed" element is the document (i.e., top-level) element of
an Atom Feed Document, acting as a container for metadata and data an Atom Feed Document, acting as a container for metadata and data
associated with the feed. Its element children consist of one or associated with the feed. Its element children consist of metadata
more metadata elements followed by zero or more atom:entry child elements followed by zero or more atom:entry child elements.
elements.
This specification assigns no significance to the order of atom:entry
elements within the feed.
atomFeed = atomFeed =
element atom:feed { element atom:feed {
atomCommonAttributes, atomCommonAttributes,
(atomAuthor? (atomAuthor?
& atomCategory* & atomCategory*
& atomContributor* & atomContributor*
& atomCopyright? & atomCopyright?
& atomGenerator? & atomGenerator?
& atomIcon? & atomIcon?
& atomId? & atomId?
& atomImage? & atomImage?
& atomLink+ & atomLink+
& atomSubtitle? & atomSubtitle?
& atomTitle & atomTitle
& atomUpdated & atomUpdated
& anyElement* ), & extensionElement*),
atomEntry* atomEntry*
} }
This specification assigns no significance to the order of atom:entry
elements within the feed.
The following child elements are defined by this specification (note The following child elements are defined by this specification (note
that the presence of some of these elements is required): that the presence of some of these elements is required):
o atom:feed elements MUST contain exactly one atom:author element, o atom:feed elements MUST contain exactly one atom:author element,
UNLESS all of the atom:feed element's child atom:entry elements UNLESS all of the atom:feed element's child atom:entry elements
contain an atom:author element. atom:feed elements MUST NOT contain an atom:author element. atom:feed elements MUST NOT
contain more than one atom:author element. [[anchor22: contain more than one atom:author element.
inheritance]]
o atom:feed elements MAY contain any number of atom:category o atom:feed elements MAY contain any number of atom:category
elements. elements.
o atom:feed elements MAY contain any number of atom:contributor