< draft-ietf-atompub-format-10.txt   draft-ietf-atompub-format-11.txt >
Network Working Group M. Nottingham, Ed. Network Working Group M. Nottingham, Ed.
Internet-Draft R. Sayre, Ed. Internet-Draft R. Sayre, Ed.
Expires: January 12, 2006 July 11, 2005 Expires: February 16, 2006 August 15, 2005
The Atom Syndication Format The Atom Syndication Format
draft-ietf-atompub-format-10 draft-ietf-atompub-format-11
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware 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 becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 33 skipping to change at page 1, line 33
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 January 12, 2006. This Internet-Draft will expire on February 16, 2006.
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.
skipping to change at page 4, line 13 skipping to change at page 4, line 13
</feed> </feed>
A more extensive, single-entry Atom Feed Document: A more extensive, single-entry Atom Feed Document:
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"> <feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">dive into mark</title> <title type="text">dive into mark</title>
<subtitle type="html"> <subtitle type="html">
A &lt;em&gt;lot&lt;/em&gt; of effort A &lt;em&gt;lot&lt;/em&gt; of effort
went into making this effortless went into making this effortless
</subtitle> </subtitle>
<updated>2005-07-11T12:29:29Z</updated> <updated>2005-07-31T12:29:29Z</updated>
<id>tag:example.org,2003:3</id> <id>tag:example.org,2003:3</id>
<link rel="alternate" type="text/html" <link rel="alternate" type="text/html"
hreflang="en" href="http://example.org/"/> hreflang="en" href="http://example.org/"/>
<link rel="self" type="application/atom+xml" <link rel="self" type="application/atom+xml"
href="http://example.org/feed.atom"/> href="http://example.org/feed.atom"/>
<rights>Copyright (c) 2003, Mark Pilgrim</rights> <rights>Copyright (c) 2003, Mark Pilgrim</rights>
<generator uri="http://www.example.com/" version="1.0"> <generator uri="http://www.example.com/" version="1.0">
Example Toolkit Example Toolkit
</generator> </generator>
<entry> <entry>
<title>Atom draft-07 snapshot</title> <title>Atom draft-07 snapshot</title>
<link rel="alternate" type="text/html" <link rel="alternate" type="text/html"
href="http://example.org/2005/04/02/atom"/> href="http://example.org/2005/04/02/atom"/>
<link rel="enclosure" type="audio/mpeg" length="1337" <link rel="enclosure" type="audio/mpeg" length="1337"
href="http://example.org/audio/ph34r_my_podcast.mp3"/> href="http://example.org/audio/ph34r_my_podcast.mp3"/>
<id>tag:example.org,2003:3.2397</id> <id>tag:example.org,2003:3.2397</id>
<updated>2005-07-11T12:29:29Z</updated> <updated>2005-07-31T12:29:29Z</updated>
<published>2003-12-13T08:29:29-04:00</published> <published>2003-12-13T08:29:29-04:00</published>
<author> <author>
<name>Mark Pilgrim</name> <name>Mark Pilgrim</name>
<uri>http://example.org/</uri> <uri>http://example.org/</uri>
<email>f8dy@example.com</email> <email>f8dy@example.com</email>
</author> </author>
<contributor> <contributor>
<name>Sam Ruby</name> <name>Sam Ruby</name>
</contributor> </contributor>
<contributor> <contributor>
skipping to change at page 6, line 27 skipping to change at page 6, line 27
namespace atom = "http://www.w3.org/2005/Atom" namespace atom = "http://www.w3.org/2005/Atom"
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. This specification does not Documents MUST be well-formed XML. This specification does not
define a DTD for Atom Documents, and hence does not require them to define a DTD for Atom Documents, and hence does not require them to
be valid (in the sense used by XML). be valid (in the sense used by XML).
Atom allows the use of IRIs [RFC3987], as well as URIs [RFC3986]. Atom allows the use of IRIs [RFC3987]. Every URI [RFC3986] is also
Every URI is an IRI, so any URI can be used where an IRI is needed. an IRI, so a URI may be used wherever below an IRI is named. There
While IRIs must, for many protocols, be mapped to URIs prior to are two special considerations: when an IRI which is not also a URI
dereferencing, they MUST NOT be so mapped for comparison when used in is given for dereferencing, it MUST be mapped to a URI using the
atom:id. Section 3.1 of [RFC3987] describes how to map an IRI to a steps in Section 3.1 of [RFC3987]; when an IRI is serving as an
URI when necessary. atom:id value, it MUST NOT be so mapped, so that the comparison works
as described in Section 4.2.6.1.
Any element defined by this specification MAY have an xml:base Any element defined by this specification MAY have an xml:base
attribute [W3C.REC-xmlbase-20010627]. When xml:base is used in an attribute [W3C.REC-xmlbase-20010627]. When xml:base is used in an
Atom Document, it serves the function described in section 5.1.1 of Atom Document, it serves the function described in section 5.1.1 of
[RFC3986], establishing the base URI (or IRI) for resolving any [RFC3986], establishing the base URI (or IRI) for resolving any
relative references found within the effective scope of the xml:base relative references found within the effective scope of the xml:base
attribute. attribute.
Any element defined by this specification MAY have an xml:lang Any element defined by this specification MAY have an xml:lang
attribute, whose content indicates the natural language for the attribute, whose content indicates the natural language for the
skipping to change at page 8, line 15 skipping to change at page 8, line 15
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 those 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.
Note that there MUST NOT be any whitespace in a Date construct or in
any IRI. Some XML-emitting implementations erroneously insert
whitespace around values by default, and such implementations will
emit invalid Atom Documents.
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. The content of Text constructs is Language-Sensitive. quantities. The content of Text constructs is Language-Sensitive.
atomPlainTextConstruct = atomPlainTextConstruct =
atomCommonAttributes, atomCommonAttributes,
attribute type { "text" | "html" }?, attribute type { "text" | "html" }?,
text text
skipping to change at page 17, line 49 skipping to change at page 17, line 49
atomContent = atomInlineTextContent atomContent = atomInlineTextContent
| atomInlineXHTMLContent | atomInlineXHTMLContent
| atomInlineOtherContent | atomInlineOtherContent
| atomOutOfLineContent | atomOutOfLineContent
4.1.3.1 The "type" attribute 4.1.3.1 The "type" attribute
On the atom:content element, the value of the "type" attribute MAY be On the atom:content element, the value of the "type" attribute MAY be
one of "text", "html", or "xhtml". Failing that, it MUST conform to one of "text", "html", or "xhtml". Failing that, it MUST conform to
the syntax of a MIME media type, but MUST NOT be a composite type the syntax of a MIME media type, but MUST NOT be a composite type
(see Section 4.2.6 of [MIMEREG]). If the type attribute is not (see Section 4.2.6 of [MIMEREG]). If neither the type attribute nor
provided, Atom Processors MUST behave as though it were present with the src attribute is provided, Atom Processors MUST behave as though
a value of "text". the type attribute were present with a value of "text".
4.1.3.2 The "src" attribute 4.1.3.2 The "src" attribute
atom:content MAY have a "src" attribute, whose value MUST be an IRI atom:content MAY have a "src" attribute, whose value MUST be an IRI
reference [RFC3987]. If the "src" attribute is present, atom:content reference [RFC3987]. If the "src" attribute is present, atom:content
MUST be empty. Atom Processors MAY use the IRI to retrieve the MUST be empty. Atom Processors MAY use the IRI to retrieve the
content, and MAY chose to ignore remote content or present it in a content, and MAY chose to ignore remote content or present it in a
different manner than local content. different manner than local content.
If the "src" attribute is present, the "type" attribute SHOULD be If the "src" attribute is present, the "type" attribute SHOULD be
skipping to change at page 24, line 40 skipping to change at page 24, line 40
atom:link elements MAY have a "rel" attribute that indicates the link atom:link elements MAY have a "rel" attribute that indicates the link
relation type. If the "rel" attribute is not present, the link relation type. If the "rel" attribute is not present, the link
element MUST be interpreted as if the link relation type is element MUST be interpreted as if the link relation type is
"alternate". "alternate".
The value of "rel" MUST be a string that is non-empty, and matches The value of "rel" MUST be a string that is non-empty, and matches
either the "isegment-nz-nc" or the "IRI" production in [RFC3987]. either the "isegment-nz-nc" or the "IRI" production in [RFC3987].
Note that use of a relative reference other than a simple name is not Note that use of a relative reference other than a simple name is not
allowed. If a name is given, implementations MUST consider the link allowed. If a name is given, implementations MUST consider the link
relation type to be equivalent to the same name registered within the relation type to be equivalent to the same name registered within the
IANA Registry of Link Relations Section 7, and thus the IRI that IANA Registry of Link Relations (Section 7), and thus the IRI that
would be obtained by appending the value of the rel attribute to the would be obtained by appending the value of the rel attribute to the
string "http://www.iana.org/assignments/relation/". The value of string "http://www.iana.org/assignments/relation/". The value of
"rel" describes the meaning of the link, but does not impose any "rel" describes the meaning of the link, but does not impose any
behavioral requirements on Atom Processors. behavioral requirements on Atom Processors.
This document defines five initial values for the Registry of Link This document defines five initial values for the Registry of Link
Relations: Relations:
1. The value "alternate" signifies that the IRI in the value of the 1. The value "alternate" signifies that the IRI in the value of the
href attribute identifies an alternate version of the resource href attribute identifies an alternate version of the resource
skipping to change at page 27, line 25 skipping to change at page 27, line 25
present in the entry, and including some or all of the source feed's present in the entry, and including some or all of the source feed's
Metadata elements as the atom:source element's children. Such Metadata elements as the atom:source element's children. Such
metadata SHOULD be preserved if the source atom:feed contains any of metadata SHOULD be preserved if the source atom:feed contains any of
the child elements atom:author, atom:contributor, atom:rights, or the child elements atom:author, atom:contributor, atom:rights, or
atom:category and those child elements are not present in the source atom:category and those child elements are not present in the source
atom:entry. atom:entry.
atomSource = atomSource =
element atom:source { element atom:source {
atomCommonAttributes, atomCommonAttributes,
(atomAuthor? (atomAuthor*
& atomCategory* & atomCategory*
& atomContributor* & atomContributor*
& atomGenerator? & atomGenerator?
& atomIcon? & atomIcon?
& atomId? & atomId?
& atomLink* & atomLink*
& atomLogo? & atomLogo?
& atomRights? & atomRights?
& atomSubtitle? & atomSubtitle?
& atomTitle? & atomTitle?
skipping to change at page 32, line 16 skipping to change at page 32, line 16
6.1 Extensions From Non-Atom Vocabularies 6.1 Extensions From Non-Atom Vocabularies
This specification describes Atom's XML markup vocabulary. Markup This specification describes Atom's XML markup vocabulary. Markup
from other vocabularies ("foreign markup") can be used in an Atom from other vocabularies ("foreign markup") can be used in an Atom
Document. Note that the atom:content element is designed to support Document. Note that the atom:content element is designed to support
the inclusion of arbitrary foreign markup. the inclusion of arbitrary foreign markup.
6.2 Extensions To the Atom Vocabulary 6.2 Extensions To the Atom Vocabulary
Future versions of this specification could add new elements and The Atom namespace is reserved for future forwards-compatible
attributes to the Atom markup vocabulary. Software written to revisions of Atom. Future versions of this specification could add
conform to this version of the specification will not be able to new elements and attributes to the Atom markup vocabulary. Software
process such markup correctly and, in fact, will not be able to written to conform to this version of the specification will not be
distinguish it from markup error. For the purposes of this able to process such markup correctly and, in fact, will not be able
to distinguish it from markup error. For the purposes of this
discussion, unrecognized markup from the Atom vocabulary will be discussion, unrecognized markup from the Atom vocabulary will be
considered "foreign markup". considered "foreign markup".
6.3 Processing Foreign Markup 6.3 Processing Foreign Markup
Atom Processors which encounter foreign markup in a location that is Atom Processors which encounter foreign markup in a location that is
legal according to this specification MUST NOT stop processing or legal according to this specification MUST NOT stop processing or
signal an error. It might be the case that the Atom Processor is signal an error. It might be the case that the Atom Processor is
able to process the foreign markup correctly and does so. Otherwise, able to process the foreign markup correctly and does so. Otherwise,
such markup is termed "unknown foreign markup". such markup is termed "unknown foreign markup".
When unknown foreign markup is encountered as a child of atom:entry, When unknown foreign markup is encountered as a child of atom:entry,
atom:feed, or a Person construct, Atom Processors MAY bypass the atom:feed, or a Person construct, Atom Processors MAY bypass the
markup and any textual content and MUST NOT change their behavior as markup and any textual content and MUST NOT change their behavior as
a result of the markup's presence. a result of the markup's presence.
When unknown foreign markup is encountered in a Text Contruct or When unknown foreign markup is encountered in a Text Construct or
atom:content element, software SHOULD ignore the markup and process atom:content element, software SHOULD ignore the markup and process
any text content of foreign elements as though the surrounding markup any text content of foreign elements as though the surrounding markup
were not present. were not present.
6.4 Extension Elements 6.4 Extension Elements
Atom allows foreign markup anywhere in an Atom document, except where Atom allows foreign markup anywhere in an Atom document, except where
it is explicitly forbidden. Child elements of atom:entry, atom:feed, it is explicitly forbidden. Child elements of atom:entry, atom:feed,
and Person constructs are considered Metadata elements, and are atom:source, and Person constructs are considered Metadata elements,
described below. Child elements of Person constructs are considered and are described below. Child elements of Person constructs are
to apply to the construct. The role of other foreign markup is considered to apply to the construct. The role of other foreign
undefined by this specification. markup is undefined by this specification.
6.4.1 Simple Extension Elements 6.4.1 Simple Extension Elements
A Simple Extension element MUST NOT have any attributes or child A Simple Extension element MUST NOT have any attributes or child
elements. The element MAY contain character data, or be empty. elements. The element MAY contain character data, or be empty.
Simple Extension elements are not Language-Sensitive. Simple Extension elements are not Language-Sensitive.
simpleExtensionElement = simpleExtensionElement =
element * - atom:* { element * - atom:* {
text text
skipping to change at page 40, line 9 skipping to change at page 40, line 9
9.2 Informative References 9.2 Informative References
[ISO.8601.1988] [ISO.8601.1988]
International Organization for Standardization, "Data International Organization for Standardization, "Data
elements and interchange formats - Information interchange elements and interchange formats - Information interchange
- Representation of dates and times", ISO Standard 8601, - Representation of dates and times", ISO Standard 8601,
June 1988. June 1988.
[RELAX-NG] [RELAX-NG]
Clark, J., "RELAX NG Compact Syntax", December 2001, <http Clark, J., "RELAX NG Compact Syntax", December 2001,
://www.oasis-open.org/committees/relax-ng/ <http://www.oasis-open.org/committees/relax-ng/
compact-20021121.html>. compact-20021121.html>.
[RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 2434, IANA Considerations Section in RFCs", BCP 26, RFC 2434,
October 1998. October 1998.
[W3C.NOTE-datetime-19980827] [W3C.NOTE-datetime-19980827]
Wolf, M. and C. Wicksteed, "Date and Time Formats", W3C Wolf, M. and C. Wicksteed, "Date and Time Formats", W3C
NOTE NOTE-datetime-19980827, August 1998, NOTE NOTE-datetime-19980827, August 1998,
<http://www.w3.org/TR/1998/NOTE-datetime-19980827>. <http://www.w3.org/TR/1998/NOTE-datetime-19980827>.
skipping to change at page 42, line 9 skipping to change at page 42, line 9
Aristotle Pagaltzis, John Panzer, Graham Parks, Dave Pawson, Mark Aristotle Pagaltzis, John Panzer, Graham Parks, Dave Pawson, Mark
Pilgrim, David Powell, Julian Reschke, Phil Ringnalda, Antone Roundy, Pilgrim, David Powell, Julian Reschke, Phil Ringnalda, Antone Roundy,
Sam Ruby, Eric Scheid, Brent Simmons, Henri Sivonen, Ray Slakinski, Sam Ruby, Eric Scheid, Brent Simmons, Henri Sivonen, Ray Slakinski,
James Snell, Henry Story, Asbjorn Ulsberg, Walter Underwood, Norman James Snell, Henry Story, Asbjorn Ulsberg, Walter Underwood, Norman
Walsh, Dave Winer, and Bob Wyman. Walsh, Dave Winer, and Bob Wyman.
Appendix B. RELAX NG Compact Schema Appendix B. RELAX NG Compact Schema
This appendix is informative. This appendix is informative.
The schema below validates the XML document format defined by this The Relax NG schema explicitly excludes elements in the Atom
specification. Updates to this specification could add markup in the namespace which are not defined in this revision of the
Atom namespace in a manner that is invalid according to the schema specification. Requirements for Atom Processors encountering such
below. Requirements for Atom Processors encountering such markup are markup are given in Section 6.2 and Section 6.3.
given in Section 6.2 and Section 6.3.
# -*- rnc -*- # -*- rnc -*-
# RELAX NG Compact Syntax Grammar for the # RELAX NG Compact Syntax Grammar for the
# Atom Format Specification Version 09 # Atom Format Specification Version 11
namespace atom = "http://www.w3.org/2005/Atom" namespace atom = "http://www.w3.org/2005/Atom"
namespace xhtml = "http://www.w3.org/1999/xhtml" namespace xhtml = "http://www.w3.org/1999/xhtml"
namespace s = "http://www.ascc.net/xml/schematron" namespace s = "http://www.ascc.net/xml/schematron"
namespace local = "" namespace local = ""
start = atomFeed | atomEntry start = atomFeed | atomEntry
# Common attributes # Common attributes
skipping to change at page 47, line 6 skipping to change at page 47, line 4
# atom:rights # atom:rights
atomRights = element atom:rights { atomTextConstruct } atomRights = element atom:rights { atomTextConstruct }
# atom:source # atom:source
atomSource = atomSource =
element atom:source { element atom:source {
atomCommonAttributes, atomCommonAttributes,
(atomAuthor? (atomAuthor*
& atomCategory* & atomCategory*
& atomContributor* & atomContributor*
& atomGenerator? & atomGenerator?
& atomIcon? & atomIcon?
& atomId? & atomId?
& atomLink* & atomLink*
& atomLogo? & atomLogo?
& atomRights? & atomRights?
& atomSubtitle? & atomSubtitle?
& atomTitle? & atomTitle?
skipping to change at page 50, line 7 skipping to change at page 50, line 7
xhtmlDiv = element xhtml:div { xhtmlDiv = element xhtml:div {
(attribute * { text } (attribute * { text }
| text | text
| anyXHTML)* | anyXHTML)*
} }
# EOF # EOF
Appendix C. Change Log Appendix C. Change Log
[[anchor69: This section should be removed before final [[anchor70: This section should be removed before final
publication.]] publication.]]
-10: capitalize "Atom Document" consistently. -10: capitalize "Atom Document" consistently.
fix atom:feed/atom:logo fix atom:feed/atom:logo
fix link hreflang/alternate in atom:feed fix link hreflang/alternate in atom:feed
Add more acknowledgements Add more acknowledgements
 End of changes. 18 change blocks. 
36 lines changed or deleted 42 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/