| draft-ietf-atompub-format-07.txt | | draft-ietf-atompub-format-08.txt | |
| | | | |
| Network Working Group M. Nottingham, Ed. | | Network Working Group M. Nottingham, Ed. | |
| Internet-Draft R. Sayre, Ed. | | Internet-Draft R. Sayre, Ed. | |
| Expires: October 2, 2005 March 31, 2005 | | Expires: October 20, 2005 April 18, 2005 | |
| | | | |
| The Atom Syndication Format | | The Atom Syndication Format | |
| draft-ietf-atompub-format-07 | | draft-ietf-atompub-format-08 | |
| | | | |
| 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 35 | | 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 October 2, 2005. | | This Internet-Draft will expire on October 20, 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. | |
| | | | |
| | | | |
| skipping to change at page 2, line 42 | | skipping to change at page 2, line 42 | |
| 4.2.8 The "atom:image" Element . . . . . . . . . . . . . . . 23 | | 4.2.8 The "atom:image" Element . . . . . . . . . . . . . . . 23 | |
| 4.2.9 The "atom:link" Element . . . . . . . . . . . . . . . 24 | | 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" Element . . . . . . . . . . . . . 26 | | 4.2.11 The "atom:source" Element . . . . . . . . . . . . . 26 | |
| 4.2.12 The "atom:subtitle" Element . . . . . . . . . . . . 27 | | 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 . . . . . . . . . . . . . . . . . . 29 | | 5. Securing Atom Documents . . . . . . . . . . . . . . . . . . 29 | |
| 6. Extending Atom . . . . . . . . . . . . . . . . . . . . . . . 30 | | 6. Extending Atom . . . . . . . . . . . . . . . . . . . . . . . 30 | |
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . 32 | | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . 33 | |
| 8. Security Considerations . . . . . . . . . . . . . . . . . . 34 | | 8. Security Considerations . . . . . . . . . . . . . . . . . . 35 | |
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 | | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 | |
| 9.1 Normative References . . . . . . . . . . . . . . . . . . . 35 | | 9.1 Normative References . . . . . . . . . . . . . . . . . . . 36 | |
| 9.2 Informative References . . . . . . . . . . . . . . . . . . 36 | | 9.2 Informative References . . . . . . . . . . . . . . . . . . 37 | |
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 37 | | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 38 | |
| A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 38 | | A. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 39 | |
| B. Collected RELAX NG Compact Schema . . . . . . . . . . . . . 39 | | B. RELAX NG Compact Schema . . . . . . . . . . . . . . . . . . 40 | |
| C. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 47 | | C. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |
| Intellectual Property and Copyright Statements . . . . . . . 50 | | Intellectual Property and Copyright Statements . . . . . . . 51 | |
| | | | |
| 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. | |
| used for other purposes and kinds of content. | | | |
| | | | |
| 1.1 Examples | | 1.1 Examples | |
| | | | |
| 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 xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-07"> | | <feed xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-08"> | |
| | | | |
| <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> | | <summary>Some text.</summary> | |
| </entry> | | </entry> | |
| | | | |
| </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://purl.org/atom/ns#draft-ietf-atompub-format-07"> | | <feed xmlns="http://purl.org/atom/ns#draft-ietf-atompub-format-08"> | |
| <title type="text">dive into mark</title> | | <title type="text">dive into mark</title> | |
| <subtitle type="html"> | | <subtitle type="html"> | |
| A <em>lot</em> of effort | | A <em>lot</em> of effort | |
| went into making this effortless | | went into making this effortless | |
| </subtitle> | | </subtitle> | |
| <updated>2005-04-02T12:29:29Z</updated> | | <updated>2005-04-02T12: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/"/> | |
| <copyright>Copyright (c) 2003, Mark Pilgrim</copyright> | | <copyright>Copyright (c) 2003, Mark Pilgrim</copyright> | |
| | | | |
| skipping to change at page 5, line 15 | | skipping to change at page 5, line 15 | |
| 1.2 Notational Conventions | | 1.2 Notational Conventions | |
| | | | |
| This specification describes conformance in terms of two artifacts; | | This specification describes conformance in terms of two artifacts; | |
| Atom Feed Documents and Atom Entry documents. Additionally, it | | Atom Feed Documents and Atom Entry documents. Additionally, it | |
| places some requirements on Atom Processors. | | places some requirements on Atom Processors. | |
| | | | |
| This specification uses XML Namespaces [W3C.REC-xml-names-19990114] | | This specification uses XML Namespaces [W3C.REC-xml-names-19990114] | |
| to uniquely identify XML element names. It uses the following | | to uniquely identify XML element names. It uses the following | |
| namespace prefix for the indicated namespace URI; | | namespace prefix for the indicated namespace URI; | |
| | | | |
| "atom": http://purl.org/atom/ns#draft-ietf-atompub-format-07 | | "atom": http://purl.org/atom/ns#draft-ietf-atompub-format-08 | |
| | | | |
| | | [[anchor4: This paragraph to be removed by the RFC Editor. The | |
| | | namespace here is a temporary one and will be changed when the IESG | |
| | | approves this document as a standard. At that time, the namespace | |
| | | will be drawn from W3C URI space. The choice of that namespace will | |
| | | be coordinated between the IETF and W3C through their respective | |
| | | liaisons.]] | |
| | | | |
| 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 Appendix B. | | complete 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", | | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |
| document are to be interpreted as described in BCP 14, [RFC2119], as | | document are to be interpreted as described in BCP 14, [RFC2119], as | |
| scoped to those conformance targets. | | 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 = | | namespace atom = | |
| "http://purl.org/atom/ns#draft-ietf-atompub-format-07" | | "http://purl.org/atom/ns#draft-ietf-atompub-format-08" | |
| 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. This specification does not | |
| | | define a DTD for Atom Documents, and hence does not require them to | |
| Atom constrains the appearance and content of elements and | | be valid (in the sense used by XML). | |
| attributes; unless otherwise stated, Atom Documents MAY contain other | | | |
| Information Items as appropriate. | | | |
| | | | |
| Any element defined by this specification MAY have an xml:base | | Any element defined by this specification MAY have an xml:base | |
| attribute. XML Base [W3C.REC-xmlbase-20010627] processing MUST be | | attribute. XML Base [W3C.REC-xmlbase-20010627] processing MUST be | |
| applied to any relative reference [RFC3987] present in an Atom | | applied to any relative reference [RFC3987] present in an Atom | |
| Document. This includes such elements and attributes as specified by | | Document. This includes such elements and attributes as specified by | |
| Atom itself, as well as those specified by extensions to Atom. | | Atom itself, as well as those specified by extensions to Atom. | |
| | | | |
| 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 | |
| element and its children. The language context is only significant | | element and its children. The language context is only significant | |
| for elements and attributes declared to be "language-sensitive" by | | for elements and attributes declared to be "language-sensitive" by | |
| this specification. Requirements regarding the content and | | this specification. Requirements regarding the content and | |
| interpretation of xml:lang are specified in XML 1.0 | | interpretation of xml:lang are specified in XML 1.0 | |
| [W3C.REC-xml-20040204], Section 2.12. | | [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], as well as URIs [RFC3986]. | | Atom allows the use of IRIs [RFC3987], as well as URIs [RFC3986]. | |
| For resolution, IRIs can easily be converted to URIs. When comparing | | IRIs can easily be converted to URIs. Every URI is an IRI, so any | |
| IRIs serving as atom:id values, they MUST NOT be converted to URIs. | | URI can be used where an IRI is needed. When comparing IRIs serving | |
| By definition, every URI is an IRI, so any URI can be used where an | | as atom:id values, they MUST NOT be converted to URIs. | |
| IRI is needed. | | | |
| | | | |
| Atom is an extensible format. See the section titled 'Extending | | Atom is an extensible format. See Section 6 of this document for a | |
| Atom' later in this document for a full description of how Atom | | 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. | |
| | | | |
| 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. | |
| | | | |
| skipping to change at page 8, line 37 | | skipping to change at page 8, line 37 | |
| attribute type { "xhtml" }, | | attribute type { "xhtml" }, | |
| xhtmlDiv | | xhtmlDiv | |
| | | | |
| atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct | | atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct | |
| | | | |
| 3.1.1 The "type" Attribute | | 3.1.1 The "type" Attribute | |
| | | | |
| Text constructs MAY have a "type" attribute. When present, the value | | Text constructs MAY have a "type" attribute. When present, the value | |
| MUST be one of "text", "html" or "xhtml". If the "type" attribute is | | MUST be one of "text", "html" or "xhtml". If the "type" attribute is | |
| not provided, Atom Processors MUST behave as though it were present | | not provided, Atom Processors MUST behave as though it were present | |
| with a value of "text". | | with a value of "text". MIME media types [MIMEREG] MUST NOT be used | |
| | | as values for the "type" attribute. | |
| Note that MIME media types [RFC2045] are not acceptable values for | | | |
| the "type" attribute. | | | |
| | | | |
| 3.1.1.1 Text | | 3.1.1.1 Text | |
| | | | |
| Example atom:title with text content: | | Example atom:title with text content: | |
| | | | |
| ... | | ... | |
| <title type="text"> | | <title type="text"> | |
| Less: < | | Less: < | |
| </title> | | </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 collapse | |
| using normal text rendering techniques such as proportional fonts, | | white-space (including line-breaks), and display the text using | |
| white-space collapsing, and justification. | | typographic techniques such as justification and proportional fonts. | |
| | | | |
| 3.1.1.2 HTML | | 3.1.1.2 HTML | |
| | | | |
| Example atom:title with HTML content: | | Example atom:title with HTML content: | |
| | | | |
| ... | | ... | |
| <title type="html"> | | <title type="html"> | |
| Less: <em> &lt; </em> | | Less: <em> &lt; </em> | |
| </title> | | </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 [HTML]. Any markup within MUST be escaped; for example, | |
| escaped; for example, "<br>" as "<br>". HTML markup within SHOULD | | "<br>" as "<br>". HTML markup within SHOULD be such that it could | |
| be such that it could validly appear directly within an HTML <DIV> | | validly appear directly within an HTML <DIV> element, after | |
| element, after unescaping. Atom Processors that display such content | | unescaping. Atom Processors that display such content MAY use that | |
| MAY use that markup to aid in its display. | | markup to aid in its display. | |
| | | | |
| 3.1.1.3 XHTML | | 3.1.1.3 XHTML | |
| | | | |
| Example atom:title with XHTML content: | | Example atom:title with XHTML content: | |
| | | | |
| ... | | ... | |
| <title type="xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml"> | | <title type="xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml"> | |
| <xhtml:div> | | <xhtml:div> | |
| Less: <xhtml:em> < </xhtml:em> | | Less: <xhtml:em> < </xhtml:em> | |
| </xhtml:div> | | </xhtml:div> | |
| </title> | | </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 [XHTML]. The XHTML div MUST | |
| The XHTML div MUST contain XHTML text and markup that could validly | | contain XHTML text and markup that could validly appear within an | |
| appear within an XHTML div element. The XHTML div element itself | | XHTML div element. The XHTML div element itself MUST NOT be | |
| MUST NOT be considered part of the content. Atom Processors which | | considered part of the content. Atom Processors which display the | |
| display the content MAY use the markup to aid in displaying it. | | content MAY use the markup to aid in displaying it. Escaped | |
| Escaped characters, such as "&" and ">", represent those characters, | | characters, such as "&" and ">", represent those characters, not | |
| not markup. | | markup. | |
| | | | |
| Examples of valid XHTML content: | | 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> | |
| ... | | ... | |
| | | | |
| skipping to change at page 11, line 39 | | skipping to change at page 11, line 39 | |
| 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]. | |
| | | | |
| 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" production 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 | |
| extended date-time form ABNF rule in [RFC3339]. In addition, an | | "date-time" production in [RFC3339]. In addition, an uppercase "T" | |
| uppercase "T" character MUST be used to separate date and time, and | | character MUST be used to separate date and time, and an uppercase | |
| an uppercase "Z" character MUST be present in the absence of a | | "Z" character MUST be present in the absence of a numeric time zone | |
| numeric time zone offset. | | offset. | |
| | | | |
| atomDateConstruct = | | atomDateConstruct = | |
| atomCommonAttributes, | | atomCommonAttributes, | |
| xsd:dateTime | | xsd:dateTime | |
| | | | |
| Such date values happen to be compatible with the following | | Such date values happen to be compatible with the following | |
| specifications: [ISO.8601.1988], [W3C.NOTE-datetime-19980827], and | | specifications: [ISO.8601.1988], [W3C.NOTE-datetime-19980827], and | |
| [W3C.REC-xmlschema-2-20041028]. | | [W3C.REC-xmlschema-2-20041028]. | |
| | | | |
| Date values SHOULD be as accurate as possible. For example, it would | | Date values SHOULD be as accurate as possible. For example, it would | |
| | | | |
| skipping to change at page 14, line 10 | | skipping to change at page 14, line 10 | |
| } | | } | |
| | | | |
| This specification assigns no significance to the order of atom:entry | | This specification assigns no significance to the order of atom:entry | |
| elements within the feed. | | 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. | |
| contain more than one atom:author element. | | o atom:feed elements MUST NOT contain more than one atom:author | |
| | | element. | |
| 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 | | o atom:feed elements MAY contain any number of atom:contributor | |
| elements. | | elements. | |
| o atom:feed elements MUST NOT contain more than one atom:copyright | | o atom:feed elements MUST NOT contain more than one atom:copyright | |
| element. | | element. | |
| o atom:feed elements MUST NOT contain more than one atom:generator | | o atom:feed elements MUST NOT contain more than one atom:generator | |
| element. | | element. | |
| o atom:feed elements MUST NOT contain more than one atom:icon | | o atom:feed elements MUST NOT contain more than one atom:icon | |
| element. | | element. | |
| o atom:feed elements MUST NOT contain more than one atom:image | | o atom:feed elements MUST NOT contain more than one atom:image | |
| element. | | element. | |
| o atom:feed elements MUST NOT contain more than one atom:id element. | | o atom:feed elements MUST NOT contain more than one atom:id element. | |
| o atom:feed elements MUST contain at least one atom:link element | | o atom:feed elements MUST contain at least one atom:link element | |
| with a relation of "alternate". | | with a relation of "alternate". | |
| o atom:feed elements SHOULD contain one atom:link element with a rel | | o atom:feed elements SHOULD contain one atom:link element with a rel | |
| attribute value of "self". This URI identifies the feed and a | | attribute value of "self". This URI identifies the feed and a | |
| representation equivalent to the feed. | | representation equivalent to the feed. | |
| o atom:feed elements MUST NOT contain more than one atom:link | | o atom:feed elements MUST NOT contain more than one atom:link | |
| element with a rel attribute value of "alternate" that has the | | element with a rel attribute value of "alternate" that has the | |
| same type attribute value. If a feed's atom:link element with | | same type attribute value. atom:feed elements MAY contain | |
| type="alternate" resolves to an HTML document, then that document | | | |
| SHOULD have a autodiscovery link element [Atom-autodiscovery] that | | | |
| reflects back to the feed. atom:feed elements MAY contain | | | |
| additional atom:link elements beyond those described above. | | additional atom:link elements beyond those described above. | |
| o atom:feed elements MUST NOT contain more than one atom:subtitle | | o atom:feed elements MUST NOT contain more than one atom:subtitle | |
| element. | | element. | |
| o atom:feed elements MUST contain exactly one atom:title element. | | o atom:feed elements MUST contain exactly one atom:title element. | |
| o atom:feed elements MUST contain exactly one atom:updated element. | | o atom:feed elements MUST contain exactly one atom:updated element. | |
| o atom:feed elements MUST NOT contain atom:entry elements with | | o atom:feed elements MUST NOT contain atom:entry elements with | |
| identical atom:id values. | | identical atom:id values. | |
| | | | |
| 4.1.2 The "atom:entry" Element | | 4.1.2 The "atom:entry" Element | |
| | | | |
| | | | |
| skipping to change at page 16, line 12 | | skipping to change at page 16, line 12 | |
| This specification assigns no significance to the order of appearance | | This specification assigns no significance to the order of appearance | |
| of the child elements of atom:entry. | | of the child elements of atom:entry. | |
| | | | |
| The following child elements are defined by this specification (note | | The following child elements are defined by this specification (note | |
| that it requires the presence of some of these elements): | | that it requires the presence of some of these elements): | |
| | | | |
| o atom:entry elements MUST contain exactly one atom:author element, | | o atom:entry elements MUST contain exactly one atom:author element, | |
| unless the atom:entry contains an atom:source element which | | unless the atom:entry contains an atom:source element which | |
| contains an atom:author element, or, in an Atom Feed Document, the | | contains an atom:author element, or, in an Atom Feed Document, the | |
| atom:feed element contains an atom:author element itself. | | atom:feed element contains an atom:author element itself. | |
| atom:entry elements MUST NOT contain more than one atom:author | | o atom:entry elements MUST NOT contain more than one atom:author | |
| element. | | element. | |
| o atom:entry elements MAY contain any number of atom:category | | o atom:entry elements MAY contain any number of atom:category | |
| elements. | | elements. | |
| o atom:entry elements MUST NOT contain more than one atom:content | | o atom:entry elements MUST NOT contain more than one atom:content | |
| element. | | element. | |
| o atom:entry elements MAY contain any number of atom:contributor | | o atom:entry elements MAY contain any number of atom:contributor | |
| elements. | | elements. | |
| o atom:entry elements MUST NOT contain more than one atom:copyright | | o atom:entry elements MUST NOT contain more than one atom:copyright | |
| element. | | element. | |
| o atom:entry elements MUST contain exactly one atom:id element. | | o atom:entry elements MUST contain exactly one atom:id element. | |
| o atom:entry elements that contain no child atom:content element | | o atom:entry elements that contain no child atom:content element | |
| MUST contain at least one atom:link element with a rel attribute | | MUST contain at least one atom:link element with a rel attribute | |
| value of "alternate". atom:entry elements MUST NOT contain more | | value of "alternate". | |
| than one atom:link element with a rel attribute value of | | o atom:entry elements MUST NOT contain more than one atom:link | |
| "alternate" that has the same combination of type and hreflang | | element with a rel attribute value of "alternate" that has the | |
| attribute values. atom:entry elements MAY contain additional | | same combination of type and hreflang attribute values. | |
| atom:link elements beyond those described above. | | o atom:entry elements MAY contain additional atom:link elements | |
| | | beyond those described above. | |
| o atom:entry elements MUST NOT contain more than one atom:published | | o atom:entry elements MUST NOT contain more than one atom:published | |
| element. | | element. | |
| o atom:entry elements MUST NOT contain more than one atom:source | | o atom:entry elements MUST NOT contain more than one atom:source | |
| element. | | element. | |
| o atom:entry elements MUST contain an atom:summary element in any of | | o atom:entry elements MUST contain an atom:summary element in any of | |
| the following cases: | | the following cases: | |
| * the atom:entry element contains no atom:content element. | | * the atom:entry element contains no atom:content element. | |
| * the atom:entry contains an atom:content that has a "src" | | * the atom:entry contains an atom:content that has a "src" | |
| attribute (and is thus empty). | | attribute (and is thus empty). | |
| * the atom:entry contains content that is encoded in Base64; i.e. | | * the atom:entry contains content that is encoded in Base64; i.e. | |
| the "type" attribute of atom:content is a MIME media type | | the "type" attribute of atom:content is a MIME media type | |
| [RFC2045] and does not begin with "text/" nor end with "+xml". | | [MIMEREG] and does not begin with "text/" nor end with "+xml". | |
| o atom:entry elements MUST NOT contain more than one atom:summary | | o atom:entry elements MUST NOT contain more than one atom:summary | |
| element. | | element. | |
| o atom:entry elements MUST have exactly one "atom:title" element. | | o atom:entry elements MUST have exactly one "atom:title" element. | |
| o atom:entry elements MUST contain exactly one atom:updated element. | | o atom:entry elements MUST contain exactly one atom:updated element. | |
| | | | |
| 4.1.3 The "atom:content" Element | | 4.1.3 The "atom:content" Element | |
| | | | |
| The "atom:content" element either contains or links to the content of | | The "atom:content" element either contains or links to the content of | |
| the entry. The content of atom:content is language-sensitive. | | the entry. The content of atom:content is language-sensitive. | |
| | | | |
| | | | |
| skipping to change at page 17, line 28 | | skipping to change at page 17, line 28 | |
| element atom:content { | | element atom:content { | |
| atomCommonAttributes, | | atomCommonAttributes, | |
| attribute type { "xhtml" }, | | attribute type { "xhtml" }, | |
| xhtmlDiv | | xhtmlDiv | |
| } | | } | |
| | | | |
| atomInlineOtherContent = | | atomInlineOtherContent = | |
| element atom:content { | | element atom:content { | |
| atomCommonAttributes, | | atomCommonAttributes, | |
| attribute type { atomMediaType }?, | | attribute type { atomMediaType }?, | |
| (text|anyElement)* | | (text|anyForeignElement)* | |
| } | | } | |
| | | | |
| atomOutOfLineContent = | | atomOutOfLineContent = | |
| element atom:content { | | element atom:content { | |
| atomCommonAttributes, | | atomCommonAttributes, | |
| attribute type { atomMediaType }?, | | attribute type { atomMediaType }?, | |
| attribute src { atomUri }, | | attribute src { atomUri }, | |
| empty | | empty | |
| } | | } | |
| | | | |
| atomContent = atomInlineTextContent | | atomContent = atomInlineTextContent | |
| | atomInlineXHTMLContent | | | atomInlineXHTMLContent | |
| | atomInlineOtherContent | | | atomInlineOtherContent | |
| | atomOutOfLineContent | | | atomOutOfLineContent | |
| | | | |
| 4.1.3.1 The "type" attribute | | 4.1.3.1 The "type" attribute | |
| | | | |
| atom:content MAY have a "type" attribute. When present, the value | | On the atom:content element, the value of the "type" attribute MAY be | |
| MAY be one of "text", "html", or "xhtml". Failing that, it MUST be a | | one of "text", "html", or "xhtml". Failing that, it MUST be a MIME | |
| MIME media type [RFC2045] with a discrete top-level type (see Section | | media type, but MUST NOT be a composite type (see Section 4.2.6 of | |
| 5 of [RFC2045]). If the type attribute is not provided, Atom | | [MIMEREG]). If the type attribute is not provided, Atom Processors | |
| Processors MUST behave as though it were present with a value of | | MUST behave as though it were present with a value of "text". | |
| "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 | | reference [RFC3987]. If the "src" attribute is present, Atom | |
| Processors MAY use the IRI to retrieve the content. If the "src" | | Processors MAY use the IRI to retrieve the content. If the "src" | |
| attribute is present, atom:content MUST be empty. That is to say, | | attribute is present, atom:content MUST be empty. | |
| the content may be retrievable using "src=" IRI, or it may be | | | |
| contained within atom:content, but not both. | | | |
| | | | |
| If the "src" attribute is present, the "type" attribute SHOULD be | | If the "src" attribute is present, the "type" attribute SHOULD be | |
| provided and MUST be a MIME media type [RFC2045], rather than "text", | | provided and MUST be a MIME media type [MIMEREG], rather than "text", | |
| "html", or "xhtml". The value is advisory; that is to say, upon | | "html", or "xhtml". The value is advisory; that is to say, upon | |
| dereferencing the IRI to retrieve the content, if the server | | dereferencing the IRI to retrieve the content, if the server | |
| providing that content also provides a media type, the | | providing that content also provides a media type, the | |
| server-provided media type is authoritative. | | server-provided media type is authoritative. | |
| | | | |
| If the value of type begins with "text/" or ends with "+xml", the | | If the value of type begins with "text/" or ends with "+xml", the | |
| content SHOULD be local; that is to say, no "src" attribute should be | | content SHOULD be local; that is to say, no "src" attribute should be | |
| provided. | | provided. | |
| | | | |
| 4.1.3.3 Processing Model | | 4.1.3.3 Processing Model | |
| | | | |
| Atom Documents MUST conform to the following rules. Atom Processors | | Atom Documents MUST conform to the following rules. Atom Processors | |
| MUST interpret atom:content according to the first applicable rule. | | MUST interpret atom:content according to the first applicable rule. | |
| | | | |
| 1. If the value of "type" is "text", the content of atom:content | | 1. If the value of "type" is "text", the content of atom:content | |
| MUST NOT contain child elements. Such text is intended to be | | MUST NOT contain child elements. Such text is intended to be | |
| presented to humans in a readable fashion. Thus, Atom Processors | | presented to humans in a readable fashion. Thus, Atom Processors | |
| MAY display it using normal text rendering techniques such as | | MAY collapse white-space (including line-breaks), and display the | |
| proportional fonts, white-space collapsing, and justification. | | text using typographic techniques such as justification and | |
| | | proportional fonts. | |
| | | | |
| 2. If the value of "type" is "html", the content of atom:content | | 2. If the value of "type" is "html", the content of atom:content | |
| MUST NOT contain child elements, and SHOULD be suitable for | | MUST NOT contain child elements, and SHOULD be suitable for | |
| handling as HTML [W3C.REC-html401-19991224]. The HTML markup | | handling as HTML [HTML]. The HTML markup must be escaped; for | |
| must be escaped; for example, "<br>" as "<br>". The HTML | | example, "<br>" as "<br>". The HTML markup SHOULD be such | |
| markup SHOULD be such that it could validly appear directly | | that it could validly appear directly within an HTML <DIV> | |
| within an HTML <DIV> element. Atom Processors that display the | | element. Atom Processors that display the content MAY use the | |
| content SHOULD use the markup to aid in displaying it. | | markup to aid in displaying it. | |
| | | | |
| 3. If the value of "type" is "xhtml", the content of atom:content | | 3. If the value of "type" is "xhtml", the content of atom:content | |
| MUST be a single XHTML div element | | MUST be a single XHTML div element [XHTML], and SHOULD be | |
| [W3C.REC-xhtml-basic-20001219]. The XHTML div MUST contain XHTML | | suitable for handling as XHTML. The XHTML div element itself | |
| text and markup that could validly appear within an XHTML div | | MUST NOT be considered part of the content. Atom Processors that | |
| element. The XHTML div element itself MUST NOT be considered | | display the content MAY use the markup to aid in displaying it. | |
| part of the content. Atom Processors that display the content | | Escaped characters, such as "&" and ">", represent those | |
| MAY use the markup to aid in displaying it. Escaped markup is | | characters, not markup. | |
| interpreted as a text representation of markup, and MUST NOT be | | | |
| interpreted as markup itself. | | | |
| | | | |
| 4. If the value of "type" ends with "+xml" or "/xml" | | 4. If the value of "type" ends with "+xml" or "/xml" | |
| (case-insensitive), the content of atom:content may include child | | (case-insensitive), the content of atom:content MAY include child | |
| elements, and SHOULD be suitable for handling as the indicated | | elements, and SHOULD be suitable for handling as the indicated | |
| media type. If the "src" attribute is not provided, this would | | media type. If the "src" attribute is not provided, this would | |
| normally mean that the "atom:content" element would contain a | | normally mean that the "atom:content" element would contain a | |
| single child element which would serve as the root element of the | | single child element which would serve as the root element of the | |
| XML document of the indicated type. | | XML document of the indicated type. | |
| | | | |
| 5. If the value of "type" begins with "text/" (case-insensitive), | | 5. If the value of "type" begins with "text/" (case-insensitive), | |
| the content of atom:content MUST NOT contain child elements. | | the content of atom:content MUST NOT contain child elements. | |
| | | | |
| 6. For all other values of "type", the content of atom:content MUST | | 6. For all other values of "type", the content of atom:content MUST | |
| be a valid Base64 encoding [RFC3548], which when decoded SHOULD | | be a valid Base64 encoding [RFC3548], which when decoded SHOULD | |
| be suitable for handling as the indicated media type. In this | | be suitable for handling as the indicated media type. In this | |
| case, the characters in the Base64 encoding may be preceded and | | case, |