Thread: What is RSS?
View Single Post
  #1  
Old 11-29-2005, 02:35 PM
3GM-Media 3GM-Media is offline
Junior Member
 
Join Date: Nov 2005
Posts: 14
3GM-Media is on a distinguished road
Thumbs up What is RSS?

What is RSS?
RSS is a format for syndicating news and the content of news-like sites, including major news sites like Wired, news-oriented community sites like Slashdot, and personal weblogs. But it's not just for news. Pretty much anything that can be broken down into discrete items can be syndicated via RSS: the "recent changes" page of a wiki, a changelog of CVS checkins, even the revision history of a book. Once information about each item is in RSS format, an RSS-aware program can check the feed for changes and react to the changes in an appropriate way.
RSS-aware programs called news aggregators are popular in the weblogging community. Many weblogs make content available in RSS. A news aggregator can help you keep up with all your favorite weblogs by checking their RSS feeds and displaying new items from each of them.

What does RSS look like?
Imagine you want to write a program that reads RSS feeds, so that you can publish headlines on your site, build your own portal or homegrown news aggregator, or whatever. What does an RSS feed look like? That depends on which version of RSS you're talking about. Here's a sample RSS 0.91 feed (adapted from XML.com's RSS feed):
PHP Code:
<rss version="0.91">
<
channel>
<
title>XML.com</title>
<
link>http://www.xml.com/</link> 
<description>XML.com features a rich mix of information and services for the XML community.</description>
<
language>en-us</language>
<
item>
<
title>Normalizing XMLPart 2</title>
<
link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link>
<description>In this second and final look at applying relational normalization techniques to W3C XML Schema data modelingWill Provost discusses when not to normalizethe scope of uniqueness and the fourth and fifth normal forms.</description>
</
item>
<
item>
<
title>The .NET Schema Object Model</title>
<
link>http://www.xml.com/pub/a/2002/12/04/som.html</link>
<description>Priya Lakshminarayanan describes in detail the use of the .NET Schema Object Model for programmatic manipulation of W3C XML Schemas.</description>
</
item>
<
item>
<
title>SVG's Past and Promising Future</title>
<link>http://www.xml.com/pub/a/2002/12/04/svg.html</link>
<description>In this month'
s SVG columnAntoine Quint looks back at SVGs journey through 2002 and looks forward to 2003.</description>
</
item>
</
channel>
</
rss
Simple, right? A feed comprises a channel, which has a title, link, description, and (optional) language, followed by a series of items, each of which have a title, link, and description.

Now look at the RSS 1.0 version of the same information:
PHP Code:
<rdf:RDF
xmlns
:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<
channel rdf:about="http://www.xml.com/cs/xml/query/q/19">
<
title>XML.com</title>
<
link>http://www.xml.com/</link>
<description>XML.com features a rich mix of information and services for the XML community.</description>
<
language>en-us</language>
<
items>
<
rdf:Seq>
<
rdf:li rdf:resource="http://www.xml.com/pub/a/2002/12/04/normalizing.html"/>
<
rdf:li rdf:resource="http://www.xml.com/pub/a/2002/12/04/som.html"/>
<
rdf:li rdf:resource="http://www.xml.com/pub/a/2002/12/04/svg.html"/>
</
rdf:Seq>
</
items>
</
channel>
<
item rdf:about="http://www.xml.com/pub/a/2002/12/04/normalizing.html">
<
title>Normalizing XMLPart 2</title>
<
link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link>
<description>In this second and final look at applying relational normalization techniques to W3C XML Schema data modelingWill Provost discusses when not to normalizethe scope of uniqueness and the fourth and fifth normal forms.</description>
<
dc:creator>Will Provost</dc:creator>
<
dc:date>2002-12-04</dc:date
</
item>
<
item rdf:about="http://www.xml.com/pub/a/2002/12/04/som.html">
<
title>The .NET Schema Object Model</title>
<
link>http://www.xml.com/pub/a/2002/12/04/som.html</link>
<description>Priya Lakshminarayanan describes in detail the use of the .NET Schema Object Model for programmatic manipulation of W3C XML Schemas.</description>
<
dc:creator>Priya Lakshminarayanan</dc:creator>
<
dc:date>2002-12-04</dc:date
</
item>
<
item rdf:about="http://www.xml.com/pub/a/2002/12/04/svg.html">
<
title>SVG's Past and Promising Future</title>
<link>http://www.xml.com/pub/a/2002/12/04/svg.html</link>
<description>In this month'
s SVG columnAntoine Quint looks back at SVGs journey through 2002 and looks forward to 2003.</description>
<
dc:creator>Antoine Quint</dc:creator>
<
dc:date>2002-12-04</dc:date
</
item>
</
rdf:RDF
Quite a bit more verbose. People familiar with RDF will recognize this as an XML serialization of an RDF document; the rest of the world will at least recognize that we're syndicating essentially the same information. In fact, we're including a bit more information: item-level authors and publishing dates, which RSS 0.91 does not support.

Despite being RDF/XML, RSS 1.0 is structurally similar to previous versions of RSS -- similar enough that we can simply treat it as XML and write a single function to extract information out of either an RSS 0.91 or RSS 1.0 feed. However, there are some significant differences that our code will need to be aware of:
  1. The root element is rdf:RDF instead of rss. We'll either need to handle both explicitly or just ignore the name of the root element altogether and blindly look for useful information inside it.
  2. RSS 1.0 uses namespaces extensively. The RSS 1.0 namespace is http://purl.org/rss/1.0/, and it's defined as the default namespace. The feed also uses http://www.w3.org/1999/02/22-rdf-syntax-ns# for the RDF-specific elements (which we'll simply be ignoring for our purposes) and http://purl.org/dc/elements/1.1/ (Dublin Core) for the additional ****data of article authors and publishing dates.
    We can go in one of two ways here: if we don't have a namespace-aware XML parser, we can blindly assume that the feed uses the standard prefixes and default namespace and look for item elements and dc:creator elements within them. This will actually work in a large number of real-world cases; most RSS feeds use the default namespace and the same prefixes for common modules like Dublin Core. This is a horrible hack, though. There's no guarantee that a feed won't use a different prefix for a namespace (which would be perfectly valid XML and RDF). If or when it does, we'll miss it.
    If we have a namespace-aware XML parser at our disposal, we can construct a more elegant solution that handles both RSS 0.91 and 1.0 feeds. We can look for items in no namespace; if that fails, we can look for items in the RSS 1.0 namespace. (Not shown, but RSS 0.90 feeds also use a namespace, but not the same one as RSS 1.0. So what we really need is a list of namespaces to search.)
  3. Less obvious but still important, the item elements are outside the channel element. (In RSS 0.91, the item elements were inside the channel. In RSS 0.90, they were outside; in RSS 2.0, they're inside. Whee.) So we can't be picky about where we look for items.
  4. Finally, you'll notice there is an extra items element within the channel. It's only useful to RDF parsers, and we're going to ignore it and assume that the order of the items within the RSS feed is given by their order of the item elements.
But what about RSS 2.0? Luckily, once we've written code to handle RSS 0.91 and 1.0, RSS 2.0 is a piece of cake. Here's the RSS 2.0 version of the same feed:
PHP Code:
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<
channel>
<
title>XML.com</title>
<
link>http://www.xml.com/</link>
<description>XML.com features a rich mix of information and services for the XML community.</description>
<
language>en-us</language>
<
item>
<
title>Normalizing XMLPart 2</title>
<
link>http://www.xml.com/pub/a/2002/12/04/normalizing.html</link>
<description>In this second and final look at applying relational normalization techniques to W3C XML Schema data modelingWill Provost discusses when not to normalizethe scope of uniqueness and the fourth and fifth normal forms.</description>
<
dc:creator>Will Provost</dc:creator>
<
dc:date>2002-12-04</dc:date
</
item>
<
item>
<
title>The .NET Schema Object Model</title>
<
link>http://www.xml.com/pub/a/2002/12/04/som.html</link>
<description>Priya Lakshminarayanan describes in detail the use of the .NET Schema Object Model for programmatic manipulation of W3C XML Schemas.</description>
<
dc:creator>Priya Lakshminarayanan</dc:creator>
<
dc:date>2002-12-04</dc:date
</
item>
<
item>
<
title>SVG's Past and Promising Future</title>
<link>http://www.xml.com/pub/a/2002/12/04/svg.html</link>
<description>In this month'
s SVG columnAntoine Quint looks back at SVGs journey through 2002 and looks forward to 2003.</description>
<
dc:creator>Antoine Quint</dc:creator>
<
dc:date>2002-12-04</dc:date
</
item>
</
channel>
</
rss
As this example shows, RSS 2.0 uses namespaces like RSS 1.0, but it's not RDF. Like RSS 0.91, there is no default namespace and items are back inside the channel. If our code is liberal enough to handle the differences between RSS 0.91 and 1.0, RSS 2.0 should not present any additional wrinkles.

Last edited by 3GM-Media : 11-29-2005 at 02:49 PM.
Reply With Quote
 #Add to Ads's Reputation  
OldSponsored Ads
Ads AdsPromoter is online
Member
 
Join Date: LongTime
Posts: 1100
Ads is on a distinguished road
Default New Sponsored Ads



This message will go away once you are registered. Also, by registering, you will have access to all post topics, communicate privately with other members (PM), respond to polls, upload graphics, and access other special features! Registration is fast, simple and absolutely free so please Click Here to join our Web Hosting community today!
Reply With Quote