Can current practice on auto discovery be improved?
Why do I care? Well, the current practice is a misuse of the rel attribute and is not taking advantage of the methods defined in the HTML 4 specs (and thus in XHTML 1 etc).
Example of the current practice
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://www.aurl.example/rss.xml">
Why is it a misuse of the rel attribute? See http://www.w3.org/TR/html401/types.html#type-links
- Alternate
- Designates substitute versions for the document in which the link occurs. When used together with the lang attribute, it implies a translated version of the document. When used together with the media attribute, it implies a version designed for a different medium (or media).
Merely having rel=”alternate” is insufficient, it is an alternate what? Determining this by (unregistered) mime types is (IMO) a mistake, limits the use of alternate for truly alternate meta data choices and is undefined by the HTML specs.
To extend the keywords available to use in the rel attribute requires the document author to specify a profile to specify these new keywords. See http://www.w3.org/TR/html401/struct/global.html#h-7.4.4 andhttp://www.w3.org/TR/html401/struct/global.html#profiles
In general, specifying meta data involves two steps:
- Declaring a property and a value for that property. This may be done in two ways:
- From within a document, via the META element.
- From outside a document, by linking to meta data via the LINK element (see the section on link types).
- Referring to a profile where the property and its legal values are defined. To designate a profile, use the profile attribute of the HEAD element.
These points specify how to reference Meta data, and the like, from within a HTML document. The current practice does not reflect HTML’s recommendations on this and should be modified to be in conformance. My proposal is the following.
The head element of the page should contain a profile element
e.g. <head profile="http://www.someurl.org/RSSMetaDataProfile/">
The link element pointing to the RSS feed should have a rel attribute, the attribute value is defined by the profile, the profile can be a single URL identifying the profile used it’s format is not specified by HTML (it could just point to an English language specification, for example the RSS 1.0 spec, which states the valid values.)
For example
<link rel="RSS" type="application/xml" title="RSS weblog" href="http://www.aurl.example/rss_weblog_channel.xml" >
<link rel="alternate RSS" type="application/xml" title="RSS articles" href="http://www.aurl.example/rss_articles_channel.xml" >
Now that the alternate value is not artificially overloaded it is possible to use it to correctly specify an alternate choice between two specified link types, rather than an indeterminate alternate choice.