The RSS Abstraction Interface, or RAI (said ray), provides an
object-oriented interface to XML::RSS::Parser trees that abstracts
the user from handling namespaces, overlapping and alternate tag
Its rather well known that, while popular, the RSS syntax is a bit
of a mess. Anyone who has attempted to write software that consumes
RSS feeds in the wild can attest to the headaches in handling the
many formats and interpretations that are in use. For instance, in
The myth of RSS compatibility
Mark Pilgrim identifies 9 different versions of RSS (there are 10
actually) and that is not without going into tags with
overlapping purposes. Even the acronym RSS has multiple though
The XML::RSS::Parser alone attempts to help developers cope with these
issues through a liberal interpretation of what is RSS and routines
to normalize the parse tree into a more common and manageable form.
RAI takes this one step further. Its intent is to give a developer
the means to not have to care about what tags the feed uses to
present its meta data.
RAI provides a single simplified interface that maps one method
call to various overlapping and alternate tags used in RSS feeds.
The interface also abstracts developers from needing to deal with
namespaces. Method names are based on Dublin Core terminology.
With the release of version 1.0, the XML::RSS::Parser
distribution was folded into XML::RAI.
 When initially released, RSS 2.0 had a namespace. When it was
reported a few days later that some XSLT-based systems were
breaking because of the change in the RSS namespace from "" (none)
to http://backend.userland.com/rss2, the namespace was removed, but
the version number was not incremented making it incompatible with
itself. <http://groups.yahoo.com/group/rss-dev/message/4113> This
version was not counted in Marks post.