Abstract
Replace the atom:link element with individual links, but group them all within an atom:links element. That way an extenstion element is known to be a link construct because of its location inside the links element.
Status
Open
Rationale
There have been many proposals allowing link extensibility, while still being able to extract all links from an entry or feed. None of these do both well without some other unacceptable tradeoff. This proposal allows full and standard use of XML namespace syntax while still fulfilling the latter goal, by grouping all of the links together inside a links element.
Proposal
From Atompub-format-03
Add in section 3.5:
The element name determines the relationship. The element name for a Link Construct may come from any XML namespace, but the attribute names MUST NOT have a namespace prefix attached. That is, they must not be in any namespace.
Remove section 3.5.1: "rel" Attribute
Replace section 4.2.2 with:
4.2.2 atom:links element
The atom:element contains a list of the atom:head's Link Constructs. All child elements of atom:links MUST be Link Constructs. Apart from this constraint, the atom:links element MAY contain any namespace-qualified [W3C.REC-xml-names-19990114] elements as children. This specification assigns no significance to the order of appearance of the child elements of atom:links.
4.2.2.1 atom:alternate
The "atom:alternate" element is a Link construct that points to an alternate representation of the feed.
Replace section 5.2 with:
5.2 atom:links element
The atom:element contains a list of the atom:entry's Link Constructs. All child elements of atom:links MUST be Link Constructs. Apart from this constraint, the atom:links element MAY contain any namespace-qualified [W3C.REC-xml-names-19990114] elements as children. This specification assigns no significance to the order of appearance of the child elements of atom:links.
5.2.1 atom:alternate
The "atom:alternate" element is a Link construct that points to an alternate representation of the entry.
5.2.2 atom:related
The "atom:related" element is a Link construct that points to another resource related to the entry.
Impacts
Supercedes many other link proposals.
Notes
Example:
<atom:head>
-
<atom:links>
-
<atom:alternate type="text/html" href="http://..." title="Alternate representation" />
<extension:whatever type="what/ever" href="http://..." title="A link of type extenstion:whatever" /> ...
...
</atom:head>