| 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, the characters in the Base64 encoding MAY be preceded and | |||
| followed in the atom:content element by whitespace, and lines are | followed in the atom:content element by white-space, and lines | |||
| separated by a single newline (U+000A) character. | are separated by a single newline (U+000A) character. | |||
| 4.1.3.4 Examples | 4.1.3.4 Examples | |||
| XHTML inline: | XHTML inline: | |||
| ... | ... | |||
| <content type="xhtml"> | <content 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> | |||
| skipping to change at page 22, line 33 | skipping to change at page 22, line 33 | |||
| republished, exported or imported, the content of its atom:id element | republished, exported or imported, the content of its atom:id element | |||
| MUST NOT change. Put another way, an atom:id element pertains to all | MUST NOT change. Put another way, an atom:id element pertains to all | |||
| instantiations of a particular Atom entry or feed; revisions retain | instantiations of a particular Atom entry or feed; revisions retain | |||
| the same content in their atom:id elements. It is suggested that the | the same content in their atom:id elements. It is suggested that the | |||
| atom:id element be stored along with the associated resource. | atom:id element be stored along with the associated resource. | |||
| The content of an atom:id element MUST be created in a way that | The content of an atom:id element MUST be created in a way that | |||
| assures uniqueness. | assures uniqueness. | |||
| Because of the risk of confusion between IRIs that would be | Because of the risk of confusion between IRIs that would be | |||
| equivalent if dereferenced, the following normalization strategy is | equivalent if dereferenced, the following normalization strategy | |||
| strongly encouraged when generating atom:id elements: | SHOULD be applied when generating atom:id elements: | |||
| o Provide the scheme in lowercase characters. | o Provide the scheme in lowercase characters. | |||
| o Provide the host, if any, in lowercase characters. | o Provide the host, if any, in lowercase characters. | |||
| o Only perform percent-encoding where it is essential. | o Only perform percent-encoding where it is essential. | |||
| o Use uppercase A-through-F characters when percent-encoding. | o Use uppercase A-through-F characters when percent-encoding. | |||
| o Prevent dot-segments appearing in paths. | o Prevent dot-segments appearing in paths. | |||
| o For schemes that define a default authority, use an empty | o For schemes that define a default authority, use an empty | |||
| authority if the default is desired. | authority if the default is desired. | |||
| o For schemes that define an empty path to be equivalent to a path | o For schemes that define an empty path to be equivalent to a path | |||
| of "/", use "/". | of "/", use "/". | |||
| skipping to change at page 24, line 35 | skipping to change at page 24, line 35 | |||
| MUST have a href attribute, whose value MUST be a IRI reference | MUST have a href attribute, whose value MUST be a IRI reference | |||
| [RFC3987]. | [RFC3987]. | |||
| 4.2.9.2 The "rel" Attribute | 4.2.9.2 The "rel" Attribute | |||
| 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". | |||
| ABNF for the "rel" attribute: | The value of "rel" MUST be string that is non-empty, and matches the | |||
| "isegment-nz-nc" or "IRI" production in [RFC3987]. Note that use of | ||||
| rel_attribute = isegment-nz-nc / IRI | a relative reference is not allowed. If a name is given, | |||
| implementations MUST consider the link relation type to be equivalent | ||||
| The value of "rel" MUST be string that is non-empty, does not contain | to the same name registered within the IANA Registry of Link | |||
| any colon (":") characters, and matches the "isegment-nz-nc" or "IRI" | Relations Section 7, and thus the IRI that would be obtained by | |||
| ABNF forms in [RFC3987]. Note that use of a relative reference is | appending the value of the rel attribute to the string | |||
| not allowed. If a name is given, implementations MUST consider the | "http://www.iana.org/assignments/relation/". The value of "rel" | |||
| link relation type to be equivalent to the same name registered | describes the meaning of the link, but does not impose any behavioral | |||
| within the IANA Registry of Link Relations Section 7, and thus the | requirements on implementations. | |||
| IRI that would be obtained by appending the value of the rel | ||||
| attribute to the string "http://www.iana.org/assignments/relation/". | ||||
| The value of "rel" describes the meaning of the link, but does not | ||||
| impose any behavioral requirements on implementations. | ||||
| 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 | |||
| described by the containing element. | described by the containing element. | |||
| 2. The value "related" signifies that the IRI in the value of the | 2. The value "related" signifies that the IRI in the value of the | |||
| href attribute identifies a resource related to the resource | href attribute identifies a resource related to the resource | |||
| described by the containing element. For example, the feed for a | described by the containing element. For example, the feed for a | |||
| site that discusses the performance of the search engine at | site that discusses the performance of the search engine at | |||
| "http://search.example.com" might contain, as a child of | "http://search.example.com" might contain, as a child of | |||
| atom:feed: | atom:feed: | |||
| <link rel="related" href="http://search.example.com/"> | <link rel="related" href="http://search.example.com/"/> | |||
| An identical link might appear as a child of any atom:entry whose | An identical link might appear as a child of any atom:entry whose | |||
| content contains a discussion of that same search engine. | content contains a discussion of that same search engine. | |||
| 3. The value "self" signifies that the IRI in the value of the href | 3. The value "self" signifies that the IRI in the value of the href | |||
| attribute identifies a resource equivalent to the containing | attribute identifies a resource equivalent to the containing | |||
| element. | element. | |||
| 4. The value "enclosure" signifies that the IRI in the value of the | 4. The value "enclosure" signifies that the IRI in the value of the | |||
| href attribute identifies a related resource which is potentially | href attribute identifies a related resource which is potentially | |||
| large in size and may require special handling by consuming | large in size and might require special handling by consuming | |||
| software. For Link elements with rel="enclosure", the length | software. For Link elements with rel="enclosure", the length | |||
| attribute SHOULD be provided. | attribute SHOULD be provided. | |||
| 5. The value "via" signifies that the IRI in the value of the href | 5. The value "via" signifies that the IRI in the value of the href | |||
| attribute identifies a resource that is the source of the | attribute identifies a resource that is the source of the | |||
| information provided in the containing element. | information provided in the containing element. | |||
| 4.2.9.3 The "type" Attribute | 4.2.9.3 The "type" Attribute | |||
| The "type" attribute's value is an advisory media type; it is a hint | On the link element, the "type" attribute's value is an advisory | |||
| about the type of the representation that is expected to be returned | media type; it is a hint about the type of the representation that is | |||
| when the value of the href attribute is dereferenced. Note that the | expected to be returned when the value of the href attribute is | |||
| type attribute does not override the actual media type returned with | dereferenced. Note that the type attribute does not override the | |||
| the representation. Link elements MAY have a type attribute, whose | actual media type returned with the representation. Link elements | |||
| value MUST conform to the syntax of a MIME media type [RFC2045]. | MAY have a type attribute, whose value MUST conform to the syntax of | |||
| a MIME media type [MIMEREG]. | ||||
| 4.2.9.4 The "hreflang" Attribute | 4.2.9.4 The "hreflang" Attribute | |||
| The "hreflang" attribute's content describes the language of the | The "hreflang" attribute's content describes the language of the | |||
| resource pointed to by the href attribute. When used together with | resource pointed to by the href attribute. When used together with | |||
| the rel="alternate", it implies a translated version of the entry. | the rel="alternate", it implies a translated version of the entry. | |||
| Link elements MAY have an hreflang attribute, whose value MUST be a | Link elements MAY have an hreflang attribute, whose value MUST be a | |||
| language tag [RFC3066]. | language tag [RFC3066]. | |||
| 4.2.9.5 The "title" Attribute | 4.2.9.5 The "title" Attribute | |||
| skipping to change at page 29, line 24 | skipping to change at page 29, line 24 | |||
| Signature, as described by XML-Signature and Syntax Processing | Signature, as described by XML-Signature and Syntax Processing | |||
| [W3C.REC-xmldsig-core-20020212]. | [W3C.REC-xmldsig-core-20020212]. | |||
| Processors MUST NOT reject an Atom Document containing such a | Processors MUST NOT reject an Atom Document containing such a | |||
| signature because they are not capable of verifying it; they MUST | signature because they are not capable of verifying it; they MUST | |||
| continue processing and MAY inform the user of their failure to | continue processing and MAY inform the user of their failure to | |||
| validate the signature. | validate the signature. | |||
| In other words, the presence of an element with the namespace URI | In other words, the presence of an element with the namespace URI | |||
| "http://www.w3.org/2000/09/xmldsig#" and a local name of "Signature" | "http://www.w3.org/2000/09/xmldsig#" and a local name of "Signature" | |||
| as a child of the document element must not cause an Atom Processor | as a child of the document element MUST NOT cause an Atom Processor | |||
| to fail merely because of its presence. | to fail merely because of its presence. | |||
| Other elements in an Atom Document MUST NOT be signed unless their | Other elements in an Atom Document MUST NOT be signed unless their | |||
| definitions explicitly specify such a capability. | definitions explicitly specify such a capability. | |||
| 5.2 Encryption | 5.2 Encryption | |||
| The root of an Atom Document (i.e., atom:feed in an Atom Feed | The root of an Atom Document (i.e., atom:feed in an Atom Feed | |||
| Document, atom:entry in an Atom Entry Document) MAY be encrypted, | Document, atom:entry in an Atom Entry Document) MAY be encrypted, | |||
| using the mechanisms described by XML Encryption Syntax and | using the mechanisms described by XML Encryption Syntax and | |||
| skipping to change at page 30, line 16 | skipping to change at page 30, 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 may add new elements and | Future versions of this specification could add new elements and | |||
| attributes to the Atom markup vocabulary. Software written to | attributes to the Atom markup vocabulary. Software written to | |||
| conform to this version of the specification will not be able to | conform to this version of the specification will not be able to | |||
| process such markup correctly and, in fact, will not be able to | process such markup correctly and, in fact, will not be able to | |||
| distinguish it from markup error. For the purposes of this | 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 Software Processing of Foreign Markup | 6.3 Software Processing of Foreign Markup | |||
| Software processing an Atom Document which encounters foreign markup | Software processing an Atom Document which encounters foreign markup | |||
| in a location that is legal according to this specification MUST NOT | in a location that is legal according to this specification MUST NOT | |||
| stop processing or signal an error. It may be the case that the | stop processing or signal an error. It might be the case that the | |||
| software is able to process the foreign markup correctly and does so. | software is able to process the foreign markup correctly and does so. | |||
| Otherwise, such markup is termed "unknown foreign markup". | Otherwise, 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, software MAY bypass the markup and | atom:feed, or a Person construct, software MAY bypass the markup and | |||
| any textual content and MUST NOT change its behavior as a result of | any textual content and MUST NOT change its behavior as a result of | |||
| the markup's presence. | the markup's presence. | |||
| When unknown foreign markup is encountered in a Text Contruct or | When unknown foreign markup is encountered in a Text Contruct or | |||
| atom:content element, software SHOULD ignore the markup and process | atom:content element, software SHOULD ignore the markup and process | |||
| skipping to change at page 31, line 20 | skipping to change at page 31, line 20 | |||
| elements of Person constructs are considered to apply to the | elements of Person constructs are considered to apply to the | |||
| construct. The role of other foreign markup is undefined by this | construct. The role of other foreign markup is undefined by this | |||
| specification. | 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 = | ||||
| element * - atom:* { | ||||
| text | ||||
| } | ||||
| The element can be interpreted as a simple property (or name/value | The element can be interpreted as a simple property (or name/value | |||
| pair) of the parent element that encloses it. The pair consisting of | pair) of the parent element that encloses it. The pair consisting of | |||
| the namespace-URI of the element and the local name of the element | the namespace-URI of the element and the local name of the element | |||
| can be interpreted as the name of the property. The character data | can be interpreted as the name of the property. The character data | |||
| content of the element can be interpreted as the value of the | content of the element can be interpreted as the value of the | |||
| property. If the element is empty, then the property value can be | property. If the element is empty, then the property value can be | |||
| interpreted as an empty string. | interpreted as an empty string. | |||
| 6.4.2 Structured Extension Elements | 6.4.2 Structured Extension Elements | |||
| The root element of a Structured Extension element MUST have at least | The root element of a Structured Extension element MUST have at least | |||
| one attribute or child element. It MAY have attributes, it MAY | one attribute or child element. It MAY have attributes, it MAY | |||
| contain well-formed XML content (including character data), or it MAY | contain well-formed XML content (including character data), or it MAY | |||
| be empty. Structured Extension elements are language-sensitive. | be empty. Structured Extension elements are language-sensitive. | |||
| structuredExtensionElement = | ||||
| element * - atom:* { | ||||
| (attribute * { text }+, | ||||
| (text|anyElement)*) | ||||
| | (attribute * { text }*, | ||||
| (text?, anyElement+, (text|anyElement)*)) | ||||
| } | ||||
| The structure of a Structured Extension element, including the order | The structure of a Structured Extension element, including the order | |||
| of its child elements, could be significant. | of its child elements, could be significant. | |||
| This specification does not provide an interpretation of a Structured | This specification does not provide an interpretation of a Structured | |||
| Extension element. The syntax of the XML contained in the element, | Extension element. The syntax of the XML contained in the element, | |||
| and an interpretation of how the element relates to its containing | and an interpretation of how the element relates to its containing | |||
| element is defined by the specification of the Atom extension. | element is defined by the specification of the Atom extension. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| skipping to change at page 32, line 43 | skipping to change at page 33, line 43 | |||
| Magic number(s): As specified for "application/xml" in [RFC3023], | Magic number(s): As specified for "application/xml" in [RFC3023], | |||
| section 3.2. | section 3.2. | |||
| File extension: .atom | File extension: .atom | |||
| Fragment identifiers: As specified for "application/xml" in | Fragment identifiers: As specified for "application/xml" in | |||
| [RFC3023], section 5. | [RFC3023], section 5. | |||
| Base URI: As specified in [RFC3023], section 6. | Base URI: As specified in [RFC3023], section 6. | |||
| Macintosh File Type code: TEXT | Macintosh File Type code: TEXT | |||
| Person and email address to contact for further information: Mark | Person and email address to contact for further information: Mark | |||
| Nottingham <mnot@pobox.com> | Nottingham <mnot@pobox.com> | |||
| Intended usage: COMMON | Intended usage: COMMON | |||
| Author/Change controller: This specification's author(s). | Author/Change controller: IESG | |||
| [[anchor61: update upon publication]] | ||||
| 7.1 Registry of Link Relations | 7.1 Registry of Link Relations | |||
| This registry is maintained by IANA and initially contains five | This registry is maintained by IANA and initially contains five | |||
| values: "alternate", "related", "self", "enclosure", and "via". New | values: "alternate", "related", "self", "enclosure", and "via". New | |||
| assignments are subject to IESG Approval, as outlined in [RFC2434]. | assignments are subject to IESG Approval, as outlined in [RFC2434]. | |||
| Requests should be made by email to IANA, which will then forward the | Requests should be made by email to IANA, which will then forward the | |||
| request to the IESG requesting approval. The request should contain | request to the IESG requesting approval. The request should use the | |||
| discussion of at least the following five topics: | following template: | |||
| o A value for the "rel" attribute that conforms to the syntax rule | o Attribute Value: ( A value for the "rel" attribute that conforms | |||
| given in Section 4.2.9.2 | to the syntax rule given in Section 4.2.9.2 ) | |||
| o Common name for link type. | o Description: | |||
| o Description of link type semantics. | o Expected display characteristics: | |||
| o Expected display characteristics. | o Security considerations: | |||
| o Security considerations. | ||||
| 8. Security Considerations | 8. Security Considerations | |||
| 8.1 HTML and XHTML Content | 8.1 HTML and XHTML Content | |||
| Text constructs and atom:content allow the delivery of HTML and XHTML | Text constructs and atom:content allow the delivery of HTML and XHTML | |||
| to receiving software, which may process it. Many elements in these | to receiving software. Many elements in these languages are | |||
| languages are considered 'unsafe' in that they open clients to one or | considered 'unsafe' in that they open clients to one or more types of | |||
| more types of attack. Implementers of software which processes Atom | attack. Implementers of software which processes Atom should | |||
| should carefully consider their handling of every type of element | carefully consider their handling of every type of element when | |||
| when processing incoming (X)HTML in Atom documents. See the security | processing incoming (X)HTML in Atom documents. See the security | |||
| sections of [RFC2854] and [W3C.REC-html401-19991224] for guidance. | sections of [RFC2854] and [HTML] for guidance. | |||
| Atom Processors should pay particular attention to the security of | Atom Processors should pay particular attention to the security of | |||
| the IMG, SCRIPT, EMBED, OBJECT, FRAME, FRAMESET, IFRAME, META, and | the IMG, SCRIPT, EMBED, OBJECT, FRAME, FRAMESET, IFRAME, META, and | |||
| LINK elements, but other elements may also have negative security | LINK elements, but other elements might also have negative security | |||
| properties. | properties. | |||
| (X)HTML can either directly contain or indirectly reference | (X)HTML can either directly contain or indirectly reference | |||
| executable content. | executable content. | |||
| 8.2 URIs | 8.2 URIs | |||
| Atom Processors handle URIs. See Section 7 of [RFC3986]. | Atom Processors handle URIs. See Section 7 of [RFC3986]. | |||
| 8.3 IRIs | 8.3 IRIs | |||
| skipping to change at page 35, line 9 | skipping to change at page 36, line 9 | |||
| Atom documents can be encrypted and signed using | Atom documents can be encrypted and signed using | |||
| [W3C.REC-xmlenc-core-20021210] and [W3C.REC-xmldsig-core-20020212], | [W3C.REC-xmlenc-core-20021210] and [W3C.REC-xmldsig-core-20020212], | |||
| respectively, and are subject to the security considerations implied | respectively, and are subject to the security considerations implied | |||
| by their use. | by their use. | |||
| 9. References | 9. References | |||
| 9.1 Normative References | 9.1 Normative References | |||
| [Atom-autodiscovery] | [HTML] Raggett, D., Hors, A. and I. Jacobs, "HTML 4.01 | |||
| Pilgrim, M., "Atom Feed Autodiscovery", work-in-progress, | Specification", W3C REC REC-html401-19991224, December | |||
| August 2004. | 1999, <http://www.w3.org/TR/1999/REC-html401-19991224>. | |||
| [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [MIMEREG] Freed, N. and J. Klensin, "Media Type Specifications and | |||
| Extensions (MIME) Part One: Format of Internet Message | Registration Procedures", work-in-progress | |||
| Bodies", RFC 2045, November 1996. | (draft-freed-media-type-reg-04), April 2005. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC2234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | ||||
| Specifications: ABNF", RFC 2234, November 1997. | ||||
| [RFC2822] Resnick, P., "Internet Message Format", RFC 2822, April | [RFC2822] Resnick, P., "Internet Message Format", RFC 2822, April | |||
| 2001. | 2001. | |||
| [RFC2854] Connolly, D. and L. Masinter, "The 'text/html' Media | [RFC2854] Connolly, D. and L. Masinter, "The 'text/html' Media | |||
| Type", RFC 2854, June 2000. | Type", RFC 2854, June 2000. | |||
| [RFC3023] Murata, M., St. Laurent, S. and D. Kohn, "XML Media | [RFC3023] Murata, M., St. Laurent, S. and D. Kohn, "XML Media | |||
| Types", RFC 3023, January 2001. | Types", RFC 3023, January 2001. | |||
| [RFC3066] Alvestrand, H., "Tags for the Identification of | [RFC3066] Alvestrand, H., "Tags for the Identification of | |||
| skipping to change at page 35, line 48 | skipping to change at page 36, line 45 | |||
| [RFC3548] Josefsson, S., "The Base16, Base32, and Base64 Data | [RFC3548] Josefsson, S., "The Base16, Base32, and Base64 Data | |||
| Encodings", RFC 3548, July 2003. | Encodings", RFC 3548, July 2003. | |||
| [RFC3986] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform | |||
| Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
| RFC 3986, January 2005. | RFC 3986, January 2005. | |||
| [RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource | [RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource | |||
| Identifiers (IRIs)", RFC 3987, January 2005. | Identifiers (IRIs)", RFC 3987, January 2005. | |||
| [W3C.REC-html401-19991224] | ||||
| Raggett, D., Hors, A. and I. Jacobs, "HTML 4.01 | ||||
| Specification", W3C REC REC-html401-19991224, December | ||||
| 1999. | ||||
| [W3C.REC-xhtml-basic-20001219] | ||||
| Baker, M., Ishikawa, M., Matsui, S., Stark, P., Wugofski, | ||||
| T. and T. Yamakami, "XHTML Basic", W3C | ||||
| REC REC-xhtml-basic-20001219, December 2000. | ||||
| [W3C.REC-xml-20040204] | [W3C.REC-xml-20040204] | |||
| Yergeau, F., Paoli, J., Sperberg-McQueen, C., Bray, T. and | Yergeau, F., Paoli, J., Sperberg-McQueen, C., Bray, T. and | |||
| E. Maler, "Extensible Markup Language (XML) 1.0 (Third | E. Maler, "Extensible Markup Language (XML) 1.0 (Third | |||
| Edition)", W3C REC REC-xml-20040204, February 2004. | Edition)", W3C REC REC-xml-20040204, February 2004, | |||
| <http://www.w3.org/TR/2004/REC-xml-2004020>. | ||||
| [W3C.REC-xml-infoset-20040204] | [W3C.REC-xml-infoset-20040204] | |||
| Cowan, J. and R. Tobin, "XML Information Set (Second | Cowan, J. and R. Tobin, "XML Information Set (Second | |||
| Edition)", W3C REC REC-xml-infoset-20040204, February | Edition)", W3C REC REC-xml-infoset-20040204, February | |||
| 2004. | 2004, | |||
| <http://www.w3.org/TR/2004/REC-xml-infoset-20040204>. | ||||
| [W3C.REC-xml-names-19990114] | [W3C.REC-xml-names-19990114] | |||
| Hollander, D., Bray, T. and A. Layman, "Namespaces in | Hollander, D., Bray, T. and A. Layman, "Namespaces in | |||
| XML", W3C REC REC-xml-names-19990114, January 1999. | XML", W3C REC REC-xml-names-19990114, January 1999, | |||
| <http://www.w3.org/TR/1999/REC-xml-names-19990114>. | ||||
| [W3C.REC-xmlbase-20010627] | [W3C.REC-xmlbase-20010627] | |||
| Marsh, J., "XML Base", W3C REC REC-xmlbase-20010627, June | Marsh, J., "XML Base", W3C REC REC-xmlbase-20010627, June | |||
| 2001. | 2001, <http://www.w3.org/TR/2001/REC-xmlbase-20010627>. | |||
| [W3C.REC-xmldsig-core-20020212] | [W3C.REC-xmldsig-core-20020212] | |||
| Solo, D., Reagle, J. and D. Eastlake, "XML-Signature | Solo, D., Reagle, J. and D. Eastlake, "XML-Signature | |||
| Syntax and Processing", W3C REC REC-xmldsig-core-20020212, | Syntax and Processing", W3C REC REC-xmldsig-core-20020212, | |||
| February 2002. | February 2002, | |||
| <http://www.w3.org/TR/2002/REC-xmldsig-core-20020212>. | ||||
| [W3C.REC-xmlenc-core-20021210] | [W3C.REC-xmlenc-core-20021210] | |||
| Reagle, J. and D. Eastlake, "XML Encryption Syntax and | Reagle, J. and D. Eastlake, "XML Encryption Syntax and | |||
| Processing", W3C REC REC-xmlenc-core-20021210, December | Processing", W3C REC REC-xmlenc-core-20021210, December | |||
| 2002. | 2002, | |||
| <http://www.w3.org/TR/2002/REC-xmlenc-core-20021210>. | ||||
| [XHTML] Altheim, M., Boumphrey, F., McCarron, S., Dooley, S., | ||||
| Schnitzenbaumer, S. and T. Wugofski, "Modularization of | ||||
| XHTML[TM]", W3C REC REC-xhtml-modularization-20010410, | ||||
| April 2001, | ||||
| <http://www.w3.org/TR/2001/REC-xhtml-modularization-200104 | ||||
| 10>. | ||||
| 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] | |||
| OASIS Technical Committee: RELAX NG, "RELAX NG | Clark, J., "RELAX NG Compact Syntax", December 2001, | |||
| Specification", December 2001. | <http://www.oasis-open.org/committees/relax-ng/compact-200 | |||
| 21121.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>. | ||||
| [W3C.REC-xmlschema-2-20041028] | [W3C.REC-xmlschema-2-20041028] | |||
| Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes | Malhotra, A. and P. Biron, "XML Schema Part 2: Datatypes | |||
| Second Edition", W3C REC REC-xmlschema-2-20041028, October | Second Edition", W3C REC REC-xmlschema-2-20041028, October | |||
| 2004. | 2004, | |||
| <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Mark Nottingham (editor) | Mark Nottingham (editor) | |||
| Email: mnot@pobox.com | Email: mnot@pobox.com | |||
| URI: http://www.mnot.net/ | URI: http://www.mnot.net/ | |||
| Robert Sayre (editor) | Robert Sayre (editor) | |||
| skipping to change at page 39, line 5 | skipping to change at page 40, line 5 | |||
| URI: http://boswijck.com | URI: http://boswijck.com | |||
| Appendix A. Contributors | Appendix A. Contributors | |||
| The following people contributed to preliminary drafts of this | The following people contributed to preliminary drafts of this | |||
| document: Tim Bray, Mark Pilgrim, and Sam Ruby. Norman Walsh | document: Tim Bray, Mark Pilgrim, and Sam Ruby. Norman Walsh | |||
| provided the Relax NG schema. The content and concepts within are a | provided the Relax NG schema. The content and concepts within are a | |||
| product of the Atom community and the Atom Publishing Format and | product of the Atom community and the Atom Publishing Format and | |||
| Protocol Working Group. | Protocol Working Group. | |||
| Appendix B. Collected RELAX NG Compact Schema | Appendix B. RELAX NG Compact Schema | |||
| This appendix is informative. | This appendix is informative. | |||
| # -*- rnc -*- | # -*- rnc -*- | |||
| # RELAX NG Compact Syntax Grammar for the | # RELAX NG Compact Syntax Grammar for the | |||
| # Atom Format Specification Version 07 | # Atom Format Specification Version 08 | |||
| namespace atom = | namespace atom = | |||
| "http://purl.org/atom/ns#draft-ietf-atompub-format-07" | "http://purl.org/atom/ns#draft-ietf-atompub-format-08" | |||
| 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" | |||
| start = atomFeed | atomEntry | start = atomFeed | atomEntry | |||
| # Common attributes | # Common attributes | |||
| atomCommonAttributes = | atomCommonAttributes = | |||
| attribute xml:base { atomUri }?, | attribute xml:base { atomUri }?, | |||
| attribute xml:lang { atomLanguageTag }? | attribute xml:lang { atomLanguageTag }? | |||
| skipping to change at page 40, line 14 | skipping to change at page 41, line 14 | |||
| xsd:dateTime | xsd:dateTime | |||
| # atom:feed | # atom:feed | |||
| atomFeed = | atomFeed = | |||
| [ | [ | |||
| s:rule [ | s:rule [ | |||
| context = "atom:feed" | context = "atom:feed" | |||
| s:assert [ | s:assert [ | |||
| test = "atom:link[@rel='alternate']" | test = "atom:link[@rel='alternate']" | |||
| ~ "or atom:link[not(@rel)]" | ||||
| "An atom:feed must have at least one link element " | "An atom:feed must have at least one link element " | |||
| ~ "with a rel attribute of 'alternate'." | ~ "with a rel attribute of 'alternate'." | |||
| ] | ] | |||
| ] | ] | |||
| s:rule [ | s:rule [ | |||
| context = "atom:feed" | context = "atom:feed" | |||
| s:assert [ | s:assert [ | |||
| test = "atom:author or not(atom:entry[not(atom:author)])" | test = "atom:author or not(atom:entry[not(atom:author)])" | |||
| "An atom:feed must have an atom:author unless all " | "An atom:feed must have an atom:author unless all " | |||
| ~ "of its atom:entry children have an atom:author." | ~ "of its atom:entry children have an atom:author." | |||
| skipping to change at page 41, line 4 | skipping to change at page 42, line 5 | |||
| atomEntry* | atomEntry* | |||
| } | } | |||
| # atom:entry | # atom:entry | |||
| atomEntry = | atomEntry = | |||
| [ | [ | |||
| s:rule [ | s:rule [ | |||
| context = "atom:entry" | context = "atom:entry" | |||
| s:assert [ | s:assert [ | |||
| test = "atom:link[@rel='alternate'] or atom:content" | test = "atom:link[@rel='alternate'] " | |||
| ~ "or atom:link[not(@rel)] " | ||||
| ~ "or atom:content" | ||||
| "An atom:entry must have at least one link element " | "An atom:entry must have at least one link element " | |||
| ~ "with a rel attribute of 'alternate' or content." | ~ "with a rel attribute of 'alternate' or content." | |||
| ] | ] | |||
| ] | ] | |||
| s:rule [ | s:rule [ | |||
| context = "atom:entry" | context = "atom:entry" | |||
| s:assert [ | s:assert [ | |||
| test = "atom:author or " | test = "atom:author or " | |||
| ~ "../atom:author or atom:source/atom:author" | ~ "../atom:author or atom:source/atom:author" | |||
| "An atom:entry must have an atom:author " | "An atom:entry must have an atom:author " | |||
| skipping to change at page 42, line 19 | skipping to change at page 43, line 22 | |||
| 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 | |||
| } | } | |||
| skipping to change at page 45, line 16 | skipping to change at page 46, line 19 | |||
| pattern = "[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*" | pattern = "[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*" | |||
| } | } | |||
| # Unconstrained; it's not entirely clear how IRI fit into | # Unconstrained; it's not entirely clear how IRI fit into | |||
| # xsd:anyURI so let's not try to constrain it here | # xsd:anyURI so let's not try to constrain it here | |||
| atomUri = text | atomUri = text | |||
| # Whatever an email address is, it contains at least one @ | # Whatever an email address is, it contains at least one @ | |||
| atomEmailAddress = xsd:string { pattern = ".+@.+" } | atomEmailAddress = xsd:string { pattern = ".+@.+" } | |||
| # Extensibility | # Simple Extension | |||
| simpleExtensionElement = | simpleExtensionElement = | |||
| element * - atom:* { | element * - atom:* { | |||
| text | text | |||
| } | } | |||
| # Structured Extension | ||||
| structuredExtensionElement = | structuredExtensionElement = | |||
| element * - atom:* { | element * - atom:* { | |||
| (attribute * { text }+, | (attribute * { text }+, | |||
| (text|anyElement)*) | (text|anyElement)*) | |||
| | (attribute * { text }*, | | (attribute * { text }*, | |||
| (text?, anyElement+, (text|anyElement)*)) | (text?, anyElement+, (text|anyElement)*)) | |||
| } | } | |||
| # Other Extensibility | ||||
| extensionElement = | extensionElement = | |||
| simpleExtensionElement | structuredExtensionElement | simpleExtensionElement | structuredExtensionElement | |||
| anyElement = | anyElement = | |||
| element * { | ||||
| (attribute * { text } | ||||
| | text | ||||
| | anyElement)* | ||||
| } | ||||
| anyForeignElement = | ||||
| element * - atom:* { | element * - atom:* { | |||
| (attribute * { text } | (attribute * { text } | |||
| | text | | text | |||
| | anyElement)* | | anyElement)* | |||
| } | } | |||
| # XHTML | # XHTML | |||
| anyXHTML = element xhtml:* { | anyXHTML = element xhtml:* { | |||
| (attribute * { text } | (attribute * { text } | |||
| skipping to change at page 47, line 7 | skipping to change at page 48, 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 | |||
| [[anchor72: This section should be removed before final | [[anchor71: This section should be removed before final | |||
| publication.]] | publication.]] | |||
| -08: Remove BNF | ||||
| complete rather than collected schema | ||||
| Remove a couple introductory sentences | ||||
| update MIME references | ||||
| Many editorial adjustments | ||||
| -07: Change atom:source-feed to atom:source. | -07: Change atom:source-feed to atom:source. | |||
| Add ABNF reference | Add ABNF reference | |||
| Many editorial tweaks | Many editorial tweaks | |||
| Rework extensibility | Rework extensibility | |||
| Adjust page breaks in txt version | Adjust page breaks in txt version | |||
| -06: Move Identity Construct into atom:id (only place it's used) | -06: Move Identity Construct into atom:id (only place it's used) | |||
| atom:id values must be unique within a feed. | atom:id values must be unique within a feed. | |||
| restore atom:copyright definition mistakenly dropped during | restore atom:copyright definition mistakenly dropped during | |||
| alphabetizing. | alphabetizing. | |||
| Remove atom:head, add atom:source-feed, and "Extension Construct" | Remove atom:head, add atom:source-feed, and "Extension Construct" | |||
| End of changes. | ||||
This html diff was produced by rfcdiff 1.12, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ | ||||