Extremely Simple Syndication (XSS) DRAFT 2.

| No Comments | No TrackBacks

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

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.

No TrackBacks

TrackBack URL: http://appnel.com/mt/pings/73

I'll support it. Any aggregator which can pass Simon's testsshould have no trouble supporting this profile. Read More

timothy appnel has produced a draft for what he's calling xss. (via sam ruby.) +1 if it makes <title> optional. requiring it simply ignores how a vast number of people author weblog content that others would like to syndicate. (and don't make ... Read More

My first reaction upon seeing a link to XSS on dive into mark, was to crawl in a corner, weep, curl in a foetal position, weep some more, and shout my lungs out \\\"PLEASE MAKE IT STOP!!!\\\" like a madman. \\\"It\\\" being the proliferation of new sho... Read More

Take up knitting from dive into mark on May 16, 2003 10:18 AM

XML 1.1 newline controversy. Thoughts on "the new pixelism". Hidden Mozilla preferences. Transcript of the Eldred case. Reactions to yet another a proposed syndication format. Read More

Syndication from Astroblog x2 on May 16, 2004 4:05 PM

Astroblogx2 is syndicated in the following formats: Atom 0.3 (Spec) IE CDF (Spec) ESF 1.0 (Spec) OPML 1.0 (Spec) RSS 0.91 (Spec) RSS 1.0 (Spec) RSS 3.0 (Spec) ScriptingNews 2.0b1 (Spec) SDF 1.0 (Spec) XFML 1.0 (Spec) XSS Draft 2... Read More

Leave a comment

About this Entry

This page contains a single entry by Timothy Appnel published on October 4, 2002 11:42 AM.

PeekAndPick: Mobile Content Services using RSS & J2ME. was the previous entry in this blog.

MovableType celebrates its one-year birthday with a new version. is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.