| 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 <em>lot</em> 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: < | |
| | | </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: <em> &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 "<br>". HTML markup within SHOULD | | escaped; for example, "<br>" as "<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> < </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 | |