<link rel="alternate" href="" href="http://example.org" style="color: rgb(7, 77, 143);" target="_blank">http://example.org" />
The non-normative Relax NG grammar in RFC 4287 explicitly forbids the use of atom:link here because it excludes anything in the atom namespace from being extension elements, e.g.:
simpleExtensionElement =
element * - atom:* {
text
}and so forth. On the other hand the normative text of the specification doesn't explicitly say this; it says that (basically) extension elements are anything that is "foreign markup", and that's allowed anywhere. Looking at the definition of "foreign markup", it says:
6.2. Extensions to the Atom Vocabulary
The Atom namespace is reserved for future forward-compatible
revisions of Atom. Future versions of this specification could add
new elements and attributes to the Atom markup vocabulary. Software
written to conform to this version of the specification will not be
able to process such markup correctly and, in fact, will not be able
to distinguish it from markup error. For the purposes of this
discussion, unrecognized markup from the Atom vocabulary will be
considered "foreign markup".
My reading of this is that if atom:link _in the context of atom:author_ is "foreign markup" then it's allowed, otherwise it's not allowed. I believe the intent is to allow it, because of the first few sentences of 6.2 above. If it is forbidden, then future versions of Atom could not ever allow atom:link in atom:author without breaking backwards compatibility. Meaning that this decision was frozen at 1.0 and could never be revised -- which would be odd, and I don't remember us making that decision :).
Against my interpretation is the idea that this probably represents an error in the feed, and so treating this as foreign markup would reduce the ability to do error checking. On the third hand, there is very little useful that can be done with such an error in real use other than ignore it, which is what I suspect that real processors (not validators) do. I think it's a useful and obvious mechanism for extending Atom.
Thoughts?