Permit insertion of atom:head elements in atom:entry elements in order to propagate feed metadata in entries that are copied from one feed to another. This is particularly important for generators and readers of aggregate or synthetic feeds and for cases, such as "Atom over XMPP," where documents whose root element is atom:entry are passed.
An entry is initially created within the context of a specific "source" feed. In many cases, proper understanding or attribution of an entry relies on the feed metadata. However, entries are often copied out of their original source feeds or are passed as root elements without any enclosing feed. Thus, we need a mechanism to propagate feed metadata as a contained component of an entry.
Add the following to the definition of atom:entry:
4.? The "atom:head" Element The atom:head element acts as a container for metadata about the feed within which the entry was created. atom:entry elements MAY contain at most one atom:head element. If an atom:entry is copied into one feed from another feed, then the atom:head entry of the source feed SHOULD be inserted into the atom:entry unless the entry, as copied, already contains an atom:head element. If the atom:entry already contains an atom:head, then that atom:head SHOULD be copied without modification.
The following shows an example "Atom over XMPP" entry that has an atom:head inserted. In this case, the atom:head insertion is required since the entry shown was copied into the XMPP feed from another feed.
<iq type='set' from='http-service.example.org' to='pubsub.example.org' id='publish2'> <pubsub xmlns='http://jabber.org/protocol/pubsub'> <publish node='http://example.org/feeds/atom-example.xml'> <item id='70b2a83be71dfca04df91133d953fb22b41b4267'> <entry version='draft-ietf-atompub-format-01: do not deploy' xmlns='http://purl.org/atom/ns#draft-ietf-atompub-format-01'> <head not-signed> <title>Example Feed</title> <link rel="alternate" type="text/html" href="http://example.org/index.atom"/> <updated>2003-12-13T18:30:02Z</updated> <author><name>John Doe</name></author> </head> <title>Atom-Powered Robots Run Amok</title> <link rel='alternate' type='text/html' href='http://example.org/2003/12/13/atom03'/> <id>tag:example.org,2003-12-13:robots</id> <issued>2003-12-13T08:29:29-04:00</issued> <modified>2003-12-13T08:41:41-04:00</modified> </entry> </item> </publish> </pubsub> </iq>
Synthetic feed generators must insert atom:head elements in entries.
The size of entries in synthetic feeds will be increased.
Proper attribution for atom entries is more likely.
The behavior described here is similar to that which has been used by PubSub.com in creating synthetic feeds based on the results of discussions held at the Atom Community meeting in June at Sun. PubSub.com currently inserts "<ps:source-feed>" elements to acccomplish what would be accomplished by copying atom:head instead.
This extension will make it much easier to provide proper attribution for entries in protocols such as "Atom over XMPP".