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>.