Abstract
The Atom Syndication Format 0.3 pre-draft calls out exactly two places where xml:base processing is required: the "href" attribute of the link construct and the atom:url element of the person construct.
The purpose of this proposal is to add this requirement to the atom:id element.
Status
Accepted
Rationale
While the atom:id element is specified to be a URI, it does not specify what the URI is to be evaluated relative to.
For an example of the problem that this creates, take a look at the use of GUIDs in the Blogdex RSS 2.0 feed. Each item is associated with a seven digit monotonically increasing integer. It is hard to make the case that such numbers are guaranteed "globally unique".
From the RSS 2.0 spec:
-
There are no rules for the syntax of a guid. Aggregators must view them as a string. It's up to the source of the feed to establish the uniqueness of the string.
So, in this case, the problem is the combination of "no rules for the syntax of a guid" and the fact that the server did not sufficiently "establish the uniqueness of the string".
The fact that atom:id is a URI only partially addresses this problem. Unless there is agreement on how to resolve relative URIs, there may still be inadvertent collisions.
Making atom:id relative to xml:base allows a feed to control what such values are relative to, with the default being that such ids are relative to the feed itself.
Proposal
Update 4.8 "atom:id" Element to read (additions in bold):
-
The "atom:id" element's content conveys a permanent, globally unique identifier for the feed. It MUST NOT change over time, even if the feed is relocated. atom:feed elements MAY contain an atom:id element, but MUST NOT contain more than one. The content of this element, when present, MUST be a URI.
xml:base [W3C.REC-xmlbase-20010627] processing MUST be applied to the atom:id element.
Impacts
None
Notes
-
there have been discussions of renaming the atom:url element to use the link construct. Such discussions are orthogonal to this proposal.
-
in an apparent copy/paste error, the description of the "href" attribute mentions atom:url. This needs to be changed to reflect the href attribute.
-
The url attribute of the atom:generator element is also specified as a URI, without specifying xml:base behavior.