UserPreferences

PaceAggregationDocument2


Abstract

Like PaceAggregationDocument, create a new option for the document element, <aggregation>, which can contain multiple feeds, and do away with head-in-entry. Unlike PaceAggregationDocument, this proposal doesn't rearrange the specification, making changes not required to add the <aggregation> element.

Status

New Proposal.

Rationale

From PaceAggregationDocument:

PaceFeedRecursive addresses some important issues (see its rationale), but making feeds recursive, but only one level deep, doesn't feel like the right way to address them. This proposal similarly creates a container for multiple feeds, but does so by creating a new top level element, not by allowing feeds to contain feeds. This will help avoid confusion over whether a feed in a feed can contain a feed, and so on--something we decided long ago not to allow.

Note that this proposal also differs from PaceFeedRecursive in not eliminating atom:head. atom:head was added to the format before, and for reason not related to PaceHeadInEntry, and thus, discussion of whether to remove it might be best taken up separately from discussion of alternative solutions to the problem PaceHeadInEntry addressed.

Proposal

In section 2:

2.  Atom Documents

   This specification describes three kinds of Atom Documents:  Atom Aggregation
   Documents, Atom Feed Documents, and Atom Entry Documents.

   An Atom Aggregation Document is a container for multiple Atom feeds.  Its
   document element is atom:aggregation.

   ...and further down...

   start = atomAggregation | atomFeed | atomEntry

   All three kinds of Atom documents are specified in terms of ...

In section 4:

4.1  The "atom:aggregation" Element

   The "atom:aggregation" is the document element (i.e., top-level)
   element of an Atom Aggregation Document, and acts as a container
   for multiple feeds or portions of feeds and metadata associated
   with an aggregation from multiple feeds, enabling entries from
   multiple feeds to be combined into a single document, while
   maintaining the context provided by the feeds from which they
   originate. Its first element child of atom:aggregation MUST be
   atom:head, which MAY be followed zero or more atom:feed child
   elements.

   atomAggregation =
      element atom:aggregation {
         atomCommonAttributes,
         atomVersionAttribute,
         (atomHead
          & atomFeed*)
      }

4.2  The "atom:feed" Element

   The "atom:feed" element is the document (i.e., top-level) element of
   an Atom Feed Document, acting as a container for metadata and data
   associated with the feed.  Its first element child MUST be atom:head,
   which MAY be followed zero or more atom:entry child elements.


   atomFeed =
      element atom:feed {
         atomCommonAttributes,
         atomVersionAttribute,
         (atomHead
          & atomEntry*
          & anyElement*)
      }


4.1.1  The "version" Attribute

   The document element on any type of Atom Document MUST have a
   "version" attribute whose content indicates the version of the
   Atom specification that the feed conforms to.  The content of
   this attribute is unstructured text.

   The version identifier for this specification is
   "draft-ietf-atompub-format-05: do not deploy".


   atomVersionAttribute =
    attribute version {"draft-ietf-atompub-format-05 : do not deploy"}


4.2  The "atom:head" Element

   The atom:head element acts as a container for metadata about the
   containing aggregation or feed.

Remove section 4.2.1.

Impacts

Consumers would need to be able to handle one more type of Atom Document, which would add one level of hierarchy above <feed>.

Notes


CategoryProposals