Excerpt from Beginning RSS and Atom Programming
RSS 2.0: Really Simple Syndication
By Andrew Watt
RSS 2.0 is the latest version of the development tree of RSS. It passes through the UserLand version of RSS 0.91 and RSS 0.92. In common with RSS 0.9x, RSS 1.0 avoids the use of RDF. It seems reasonable to conclude that the avoidance of RDF is partly a result of Dave Winer's preference for simplicity and his assumption that RSS feeds transmit information of largely transitory interest. As discussed in Chapter 11 "RDF: The Resource Description Framework" of Beginning RSS and Atom Programming (Wrox, 2005, ISBN: 0-7645-7916-9), those who see information feeds as conduits for disposable information don't see the value of using RDF in a feed, because metadata is unimportant for those developers who see information feeds as containing disposable, transitory information.
The changes in RSS 2.0 from RSS 0.92 are, with one exception, fairly minor. For example, there are a few new elements and a few changes regarding what particular elements should contain. The one substantive change in RSS 2.0 is the use of XML namespaces. Using XML namespaces opens up possibilities for extending RSS 2.0 using modules.
The RSS 2.0 specification is located at
XML Namespaces in RSS 2.0
RSS 2.0 uses the XML namespaces technique specified in the Namespaces in XML recommendation, located at
Because versions 0.91 and 0.92 of RSS don't use XML namespaces, all the elements associated with those specifications are, inevitably, not in any XML namespace. Therefore, unlike the situation with RSS 1.0 where a namespace URI is defined, in RSS 2.0 all the RSS elements are in no namespace.
The availability of XML namespaces allows RSS 2.0 documents to use elements from other namespaces, provided that an appropriate namespace declaration has been made. For example, you can use the Dublin Core module described in Chapter 10 "RSS 1.0 Modules" of Beginning RSS and Atom Programming.
New Elements in RSS 2.0
There are several new elements in RSS 2.0. Each is briefly described in the following list. The use of these new elements is described in more detail in the discussion on RSS 2.0 document structure.
author:An optional child element of the item element
comments: An optional child element of the
generator: An optional child element of the
guid: An optional child element of the
pubDate: An optional child element of the
ttl: An optional child element of the
The RSS 2.0 Document Structure
The RSS 2.0 document structure has many similarities to the structure of RSS 0.91 and RSS 0.92 documents.
The rss Element
rss element is the document element of an RSS 2.0 document. It has a required
version attribute with a value of
2.0. Supposedly, RSS 0.91 and 0.92 documents are legal RSS 2.0 documents but they have a different value for the
version attribute. In practice this works, despite the different and theoretically illegal values in the
version attribute in RSS 0.91 and 0.92 documents, because many aggregators ignore the value in the
If you are writing an RSS 2.0 document, the start tag of the
rss element should be written as follows:
You can also write it using single quote marks:
rss element has a single child element, the
channel element. All content of the information feed document is contained in the
Notice that there is no namespace declaration on the preceding
rss start tag. For consistency with RSS 0.91 and 0.92, the elements of RSS 2.0 are in no namespace. This has the advantage of backwards compatibility but does mean there is a risk of naming collisions. In practice, the risk of naming collisions is slight because most non-RSS 2.0 elements likely to be found in an RSS 2.0 document are in a namespace, which allows the aggregator or other user agent to distinguish those elements from RSS 2.0 elements.