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