This is a second draft of the Extremely Simple Syndication (XSS) I proposed here. XSS was drafted up a more detailed description of recent discussions and proposals for a simple core that maintains a high level of backward compatibility with RSS 0.91 and its descendants. I have classified XSS as a profile (a restricted subset) instead of a specification. I'm developing it in the spirit of "release early, release often." Feedback and suggestions to improve this description are greatly appreciated.
This draft incorporates additional clarification and feedback I received after publishing the first draft September 27.
I've set up my weblog to produce feeds in this format (here and here). The MovableType templates I'm using can be found here and here.
Extremely Simple Syndication (XSS) Profile
DRAFT 2
ABSTRACT
The XSS profile defines a restricted subset of previous RSS formats that balances ease of use and authoring with ease of consumption by applications while maintaining the richness necessary to extended and adapt to various problem domains. It is designed for applications operating in resource constrained environments such as mobile phones, PDAs and other devices or sites needing to conserve bandwidth for economic or physical reasons. It is also designed for authors wishing to provide a well-formed "feed" of information to consumers.
The XSS profile is designed around a simple common core of elements that may be extended. It is also designed to maximize backward compatibility with the RSS 0.91 format and its descendents. This allows XSS to leverage the existing install base of 0.91 feeds and prior bodies of work such as Dublin Core meta data and RSS 1.0 modules. The XSS profile contains three document types -- Strict, Transitional, and Extensible.
The goal of the XSS profile is to serve as guidelines to best practices in a balanced and simplified approach to authoring and consuming of syndicated resources with RSS.
COMMON CORE TAGS
<rss>
Description: The root tag for the syndicated resources collection.
Sub-Elements: channel (required)
Attributes: version - a string identifying the version including profile and document type.
Notes: Only one channel is permitted.
<channel>
Description: Container tag for a specific channel
Sub-Elements: title (required), description (required), link (required), item (required)
Attributes: none.
Notes: Only one title, description or link is permitted. Language is depreciated.
<item>
Description: Container tag whose contents represents one resource in the channel. At least one item must be present in a channel.
Sub-Elements: title (required), link (required), description (optional but highly recommended)
Attributes: none.
Notes: Recommended to not exceed 15 per channel.
<link>
Description: A unique URI using a IANA-registered scheme that specifies the location of the channel or item (resource). Applications are required only to support one of any of these IANA URI schemes however http:// is highly recommended. A required sub-element of channel and item.
Sub-Elements: none.
Attributes: none.
<description>
Description: A plain text excerpt of the channel or item (resource). A required sub-element of channel. Optional, though highly recommended, sub-element of item.
Sub-Elements: none.
Attributes: none.
Notes: The XSS profile supports plain text and does not permit encoded markup such as HTML to be included in the description. Recommended not to exceed 500 characters. Those wishing to embed markup language or larger pieces of content in the description tag should use the mod_content module.
<title>
Description: A plain text descriptive title of the channel or item (resource).
Sub-Elements: none.
Attributes: none.
Notes: Is the equivalent of the HTML title and only supports plain text. Encoded markup such as HTML is not permitted to be included in the title. Recommended to be no more then 100 characters.
DEPRECIATED TAGS
Tags not defined other tags from RSS 0.91 and its descendents are considered depreciated from the core in the XSS profile. This data can be furnished though various modules such as Dublin Core, mod_content and mod_admin. All depreciated tags in the XSS profile where previously considered optional except language which was required by the 0.91 specification, but made optional in later specifications.
DOCUMENT TYPES
Strict. RSS 2.0/XSS-strict. This document type only permits the use of core elements. Depreciated tags are not permitted. This document type does not expect the use of extension modules in order to maintain a simple lightweight footprint. Authors requiring more rich meta data and/or extensibility should use the Extensible document type. This document type is compatible with versions 0.92, 0.93 and 2.0. Other then the removal of the required language tag and content lengths, this document type is also compatible with 0.91. Since modules are not permitted, a namespace cannot be declared.
Transitional. RSS 2.0/XSS-transitional. All the stated expectations of the Strict document type apply. Depreciated tags such as language, copyright, and image found in the 0.91 format and its descendants are allowed, but should be ignored in favor of their extension module counterparts, when those counterparts are present. All tags deprecated in the XSS profile were previously considered optional (except language which was required by the 0.91 specification, but made optional in later specifications).
Extensible. RSS 2.0/XSS-extensible. All the stated expectations of the Strict document type apply except modules are permitted and expected. The default namespace must be defined. With this added capability to the document type, the X can be considered as representing 'extensible' rather then 'extremely.' Extensible Document Type can become quite complex and tedious to author without automated tools for generation. This document type breaks compatibility with formats prior to version 2.0. (XML namespace aware applications developed prior to version 2.0's release are likely to be able to process this document type, but are not guaranteed to do so.)
Content publishers are recommended to always utilize the Strict document type and only utilize the module extension document types (Extensible and Transitional) if richer meta data is required. When such a need exists, content publishers are also recommended to produce both a Strict document type feed and an Extensible or Transitional feed. This practice provides consuming applications a choice as to the depth information and the necessary sophistication to process it.
EXTENSIBILITY
Without detailed information to extending RSS 2.0 with modules and XML namespaces, the XSS profile Extensible and Transitional document types will follow the guidelines set forth in the RSS 1.0 format module documentation.
EXAMPLES
- XSS-extensible example using Dublin Core, mod_content, mod_slash and mod_admin
- XSS-extensible prototype of my weblog.
OUTSTANDING ISSUES
- How to identify the profile/document type? Place in version? or use XML document type? Both?
- Need to build DTD or schemas?
- Need to list out depreciated tags and map to specific modules and fields.
- link tag language sufficient? http:// is highly recommended or should it be required?
- Need to better address non-English language feeds. Morten Frederiksen suggests inclusion of a clause like "if the language is not English, please include the dc:language element according to XXX." Should non-English feeds be forced to use Extensible or Transitional? Is there a better way?
- RSS 2.0 can never use a default namespace?
CHANGE LOG
DRAFT 2, Oct 4 2002
- Corrected numerous offenses on the English language. (Misspellings etc.)
- Added revisions to Document Types Strict paragraph. (Michael Bernstein)
- Resolved omission of item as sub-element of channel. (Morten Frederiksen)
- Added omitted item description.
- Added hyperlink to RSS 1.0 modules document.
- link tag now has IANA-registered URI scheme clause to with link. (Morbus Iff)
- Recommendation on Document Type usage selection. (Sam Ruby)
- Added compatibility and namespace notes to document type descriptions.
- Added clarification that Extensible is a superset of the Strict document type.
- Added mod_slash tags to Extensible MovableType template.
DRAFT 1, Sept 27 2002
- Initial release.
Leave a comment