The Evolution of RSS | 6
[previous] [next] |
The Evolution of RSS
RSS 1.0
RDF Site Summary (RSS) 1.0 was released on December 6, 2000 by the RSS-Dev working group. RSS 1.0 is a modularized version of the original RSS 0.90 format designed to balance extensibility with simplicity. Modules can extend the core RSS 1.0 spec for use in various applications without requiring new RSS versions. Extending RSS 1.0 using namespaces should avoid much of the chaos we witnessed with the ad hoc evolution of HTML.
From the RSS 1.0 Spec:
As RSS continues to be re-purposed, aggregated, and categorized, the need for an enhanced metadata framework grows. Channel- and item-level title and description elements are being overloaded with metadata and HTML. Some producers are even resorting to inserting unofficial ad hoc elements (e.g., <category>, <date>, <author>) in an attempt to augment the sparse metadata facilities of RSS.
One proposed solution is the addition of more simple elements to the RSS core. This direction, while possibly being the simplest in the short run, sacrifices scalability and requires iterative modifications to the core format, adding requested and removing unused functionality....
A second solution, and the one adopted here, is the compartmentalization of specific functionality into the pluggable RSS modules. This is one of the approaches used in this specification: modularization is achieved by using XML Namespaces for partitioning vocabularies. Adding and removing RSS functionality is then just a matter of the inclusion of a particular set of modules best suited to the task at hand. No reworking of the RSS core is necessary.
Advanced applications of RSS are demanding richer respresentation of relationships between intra- and inter-channel elements (e.g. threaded discussions). RDF (Resource Description Framework) provides a framework for just such rich metadata modeling. RSS 0.9 provided a basic (albeit limited) RDF base upon which to layer further structure.
Example RSS 1.0 File
Here's a snippet of the equivalent content in an RSS 1.0 file from WebReference.com:
<rdf:RDF
xmlns:rdf="https://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="https://purl.org/rss/1.0/"
xmlns:dc="https://purl.org/dc/elements/1.1/"
xmlns:syn="https://purl.org/rss/1.0/modules/syndication/"
>
<channel rdf:about="https://www.webreference.com">
<title>WebReference News</title>
<link>https://www.webreference.com</link>
<description>Daily news, views, and how-tos on all aspects of web design
and development. Features free web-based tools, open source scripts, and
in-depth tutorials on DHTML, HTML, JavaScript, 3D, Graphics, XML, and Design
for webmasters.</description>
<dc:language>en-us</dc:language>
<dc:subject>Web Development</dc:subject>
<dc:creator>[email protected] (Andy King)</dc:creator>
<dc:rights>Copyright (c) 2001 INT Media Group, Inc. All rights reserved</dc:rights>
<dc:publisher>[email protected] (Andy King)</dc:publisher>
<dc:date>2001-05-04T19:47</dc:date>
<items>
<rdf:Seq>
<rdf:li rdf:resource="https://www.webreference.com/authoring/languages/xml/rss/1/" />
<rdf:li rdf:resource="https://www.webreference.com/perl/tutorial/22/" />
<rdf:li rdf:resource="https://www.webreference.com/programming/perl/professional/chap7/6/" />
...
</rdf:Seq>
</items>
<image rdf:resource="https://webreference.com/art/wr.gif" />
<textinput rdf:resource="https://www.webreference.com/cgi-bin/search.cgi" />
</channel>
<image rdf:about="https://webreference.com/art/wr.gif">
<title>WebReference.com</title>
<url>https://webreference.com/art/wr.gif</url>
<link>https://www.WebReference.com</link>
</image>
<item rdf:about="https://www.webreference.com/authoring/languages/xml/rss/1/">
<title>The Evolution of RSS</title>
<link>https://www.webreference.com/authoring/languages/xml/rss/1/</link>
<description>We look at how RSS has evolved from its humble beginnings
through present day and beyond. We survey all versions of RSS, including a
feature comparison, a new RSS survey, plus format and validation info. Learn
how the newest versions of RSS will move us towards a more Semantic Web. By
Andrew King. 0504 </description>
<dc:date>2001-05-04T19:29</dc:date>
</item>
<item rdf:about="https://www.webreference.com/perl/tutorial/22/">
<title>Weblog 2.0 Released</title>
<link>https://www.webreference.com/perl/tutorial/22/</link>
<description>Completely rewritten, Weblog 2.0 makes it easy to manage
multiple RSS channels and Yahoo-like directories. Highlights include a revamped
interface, multi-user support, one-step posts to multiple channels, Xhoo
directory integration, and more. This new version makes use of two RSS 1.0
modules, the Dublin Core, and the Taxonomy module. By Jonathan Eisenzopf.
0504</description>
<dc:date>2001-05-04T19:47</dc:date>
</item>
...
You can see the file is expanding here. Note the use of Dublin Core (dc:) and the explicit item sequence. Items can add an optional date stamp, and creator and subject (not used above). The date stamp can be useful for aggregators when sorting stories chronologically.
Modules
One of the main goals of the RSS 1.0 specification was extensibility. RSS 1.0 has a feature called RSS modules that allows anyone to extend RSS 1.0 to add new fields for their own purposes. Modules are just a new URI or namespace that can be added to an RSS document. Modules allow people to add new functionality to RSS without changing the old spec. All they need is a URI. Then anyone can use this URI to refer to their namespace. The modularization is described in the RSS 1.0 module specification.
RSS 1.0 modules use an XML feature called namespaces to create separate and non-conflicting namespaces for modules, so it is possible to "pull" any RSS 1.0 module into an RSS 1.0 document. The parser will be able to recognize which namespace an element belongs to and can thus ignore unknown elements. Example:
<rdf:RDF
xmlns:rdf="https://www.w3.org/1999/02/22-rdf-syntax-ns#
xmlns="https://purl.org/rss/1.0/
xmlns:dc="https://purl.org/dc/elements/1.1/
xmlns:syn="https://purl.org/rss/1.0/modules/syndication/>
In this example we pull in two additional modules for use in the above file, the Dublin Core, and the syndication module.
RSS 1.0 Modules
There are three standard modules that ship with RSS 1.0:
- The Dublin Core module defines 15 elements to describe basic data of a Web resource such as creator, title, creation time, publisher, etc.
- The syndication module defines three elements to give hints for content syndication.
- The content module, allows sending the actual text of an item.
As the number of modules grows the most popular ones will be rolled into the standard RSS 1.* distribution. "Modules are classified as Proposed until accepted as Standard by members of the RSS-DEV working group or a sub-membership thereof focused on the area addressed by the module."
[previous] [next] |
Created: May 03, 2001
Revised: May 10, 2001