UserPreferences

PaceExtensionNamespace


Abstract

This proposal creates an additional namespace in which attributes are defined which can be used to identify various types of constructs in both the Atom core and extensions.

Status

Open
Author: AntoneRoundy

Related and Conflicting Proposals

Numerous, including:

Key Questions

Rationale

A number of extensibility issues have been raised, primarily in connection with the discussion of Link Constructs and the link element:

  1. The current extension model for the Link Construct, adding to the list of values for the link element's rel attribute, cannot not accomodate third-party extensions without introducing qnames in the rel attribute--an idea that has been strongly opposed by many.

  2. Some have recognized benefits to a third-party extensible Link Construct allowing default processing of unknown Link Constructs.

  3. The link element, as it now stands and as proposed by various proposals, is overloaded with a variety of different purposes: specifying hyperlinks (user-activatable links), pointing to API endpoints, pointed to content to be embedded, etc. Each of these classes of link could be grouped into a Construct which could benefit from extensibility.

Proposal

All changes are stated in relation to [WWW]this draft of the Atom Syndication Format

Insert the following before section 3.1:

3.1. Extension Namespace

The Atom Extension Namespace defines a number of attributes by which common constructs may be recognized. The extension namespace URI for this specification is:

The attributes defined by the extension namespace may be recognized in this specification by the namespace "atomex". Attributes from the extension namespace MUST be explicitly namespace qualified, meaning that the extension namespace MUST NOT be the default namespace. Elements, whether defined in this specification or by an extension, which use these attributes MUST conform the to requirements for that construct defined in the following sections. Additionally, such elements MUST NOT require understanding of any additional attributes or element children.

Replace section 3.4 with the following (section numbers below have NOT been adjusted to reflect the insertion or deletion of other sections):

3.4 Link Constructs

It MUST NOT have any child content. A link construct has the following attributes:

Remove section 3.4.1 ("rel" Attribute)

Replace section 3.4.3 ("href" Attribute) with:

3.4.3 "atomex:link-href" Attribute

Insert the following after section 3.4:

3.5 Service Constructs

3.5.1 "atomex:service-href" Attribute

3.5.2 "methods" Attribute

3.6 Embed Constructs

3.6.1 "atomex:embed-src" Attribute

3.6.2 "type" Attribute

Replace section 4.2.2 with the following:

4.2.2 Link Construct Elements

4.2.2.1 "atom:alternate" Element

4.2.2.2 "atom:start" Element

4.2.2.3 "atom:prev" Element

4.2.2.4 "atom:next" Element

Insert section 4.2.3 as follows:

4.2.3 Service Construct Elements

4.2.3.1 "atom:edit" Element

4.2.3.2 "atom:post" Element

4.2.3.3 "atom:delete" Element

4.2.3.4 "atom:feed" Element

4.2.3.5 "atom:introspection" Element

Insert section 4.2.4 as follows:

4.2.4 Embed Construct Elements

4.2.4.1 "atom:favicon" Element

Replace section 5.2 with the following:

5.2 Link Construct Elements

5.2.1 "atom:alternate" Element

Insert section 5.3 as follows:

5.3 Service Construct Elements

5.3.1 "atom:edit" Element

5.3.3 "atom:delete" Element

Insert section 5.4 as follows:

5.4 Embed Construct Elements

5.4.1 "atom:image" Element

5.4.2 "atom:sound" Element

5.4.3 "atom:movie" Element

Impacts

The link element would be replaced by a number of different elements. Atom software could add functionality to enable generic processing of some unknown elements if their types are recognized by the presence of attributes from the extension namespace.

Notes

It has been pointed out that the attributes used to identify the various constructs do not need to be in a separate namespace. They could be part of the Atom core namespace, and still be identifiable by requiring that they always be explicitly namespace qualified. However, it may be advantageous to use a separate namespace to avoid potential confusion over why these particular attributes are namespace qualified, and to avoid the risk of people thinking they can omit the namespace identifier.


CategoryProposals LinkReferences