By Ben Hammersley
Book Price: $39.95 USD
£28.50 GBP
PDF Price: $31.99
Cover | Table of Contents | Colophon
http://www.eclectica-systems.co.uk/complex/hotsauce.php
and Example 1-1 for more.begin-headers: MCFVersion: 0.95 name: "Eclectica" end-headers: unit: "tagging.mco" name: "Tagging and Acrobat Integration" default_genl_x: -109 default_genl_y: -65 typeOf: #"SubjectCategory" unit: "http://www.nplum.demon.co.uk/temptin/temptin.htm" name: "TemptIn Information Management Template" genls_pos: ["tagging.mco" -85 -137] unit: "http://www.nplum.demon.co.uk/temptin/tryout.htm" name: "Download Try-out Version" genls_pos: ["tagging.mco" -235 120]
http://www.bloglines.com) may
not have been the first web-based aggregator, but it is certainly the
most popular today (see Figure 2-1).
It's free to use and very slick, offering email
subscriptions, services for webloggers, and an interesting
Application Programming Interface.
http://www.kinja.com;
see Figure 2-2) is slightly different
from most RSS and Atom applications in that it
doesn't mention either standard anywhere. It is
specifically designed to require no knowledge of the rest of this
book, and it's free and tremendously easy to use.
It's also, in my opinion, marvelously good looking.
It has fewer features than Bloglines, however, especially for
bloggers.
http://www.bloglines.com) may
not have been the first web-based aggregator, but it is certainly the
most popular today (see Figure 2-1).
It's free to use and very slick, offering email
subscriptions, services for webloggers, and an interesting
Application Programming Interface.
http://www.kinja.com;
see Figure 2-2) is slightly different
from most RSS and Atom applications in that it
doesn't mention either standard anywhere. It is
specifically designed to require no knowledge of the rest of this
book, and it's free and tremendously easy to use.
It's also, in my opinion, marvelously good looking.
It has fewer features than Bloglines, however, especially for
bloggers.
http://ranchero.com/netnewswire/; see Figure 2-4) caused a stir when it was first released.
Version 2 is even better and is my personal favorite.
It's not free, but you can try out a 30-day demo.
http://www.newsmonster.org/) is
an enormous application. It's cross-platform and
runs on Windows, Mac OS X, and Linux, off the back of Mozilla 1.0 or
better. It's a truly ambitious piece of work with a
lot of features you won't find anywhere
else—for example, reputation networks, where users can
recommend feeds to each other, and so on. It's well
worth a look (see Figure 2-6).
http://www.happyjackroad.com/AtomicDB/pocketpc/pocketRSS/pocketRSS.asp)http://standalone.com/palmos/hand_rss/) is a
nice, nonfree but with a 30-day trial, RSS feed for Palm devices.http://www.mobilerss.net)
isn't an application per se but a service for
turning RSS feeds into HTML simple enough to read on any mobile
device's browser. It's built on the
MagpieRSS parser shown in Chapter 8.http://www.feedburner.com/fb/a/mfr) comes
from the same people who provide the FeedBurner service detailed in
Chapter 9. It should run on any of the latest
mobile devices compatible with the J2ME MIDP 2.0/CLDC1.0 platform.http://izynews.com/de/default.aspx?) sets up
RSS feeds as unread messages in an IMAP directory. It requires some
server-side setup, but it's perfect for a corporate
environment with locked-down desktop machines.http://www.newsgator.com/outlook.aspx) is an
RSS reader extension for Microsoft Outlook. Many people swear by it,
and it features synchronization with an online version for when
you're away from your main machine.head section of the code that
reads:<link rel="alternate" type="application/rss+xml" title="RSS" href= "http://www.example.org/ rss.xml"/>
href part is the URL you want. This is a
called an Auto-Discovery link and is discussed in Chapter 9.index.xml, index.rdf,
rss.xml, rss.php,
index.rss, or index.atom;
usually, one of these will work.http://www.syndic8.com). This directory, also
covered in Chapter 9, has over 200,000 feeds
listed.http://www.mailbucket.org/) and
Dodgeit (http://www.dodgeit.com/).xxx@mailbucket.org or
xxx@dodgeit.com, where xxx is
your own chosen identity. There's no sign up, so you
need to check that your chosen identity isn't
already taken. This highlights one issue: your mail
isn't private, so don't use it for
things you don't want others to see. (You could use
an incredibly unguessable identity to make such risks very unlikely.)
http://www.mailbucket.org/xxx.xml or
http://www.dodgeit.com/run/rss?mailbox=xxx.
You will then see something like Figure 3-2 in your
reader application.
http://www.mailbucket.org/) and
Dodgeit (http://www.dodgeit.com/).xxx@mailbucket.org or
xxx@dodgeit.com, where xxx is
your own chosen identity. There's no sign up, so you
need to check that your chosen identity isn't
already taken. This highlights one issue: your mail
isn't private, so don't use it for
things you don't want others to see. (You could use
an incredibly unguessable identity to make such risks very unlikely.)
http://www.mailbucket.org/xxx.xml or
http://www.dodgeit.com/run/rss?mailbox=xxx.
You will then see something like Figure 3-2 in your
reader application.
http://www.benhammersley.com/tools/google_to_rss.html.
To use it, simply add your search request to the end of the URL
http://www.benhammersley.com/tools/googlerss.cgi?q=.
For example:http://www.benhammersley.com/tools/googlerss.cgi?q=ben%20hammersley
http://www.google.com/apis/
and use it with your own queries. Add it to the URL with a
&k=123456789 attribute, like this:http://www.benhammersley.com/tools/googlerss.cgi?q=ben%20hammersley&k=123456789
http://www.voidstar.com/gnews2rss.php.http://www.voidstar.com/gnews2rss.php?num=number_of_items&q=your_query
http://search.news.yahoo.com/search/news/?c=&p=Conkers
for news of the greatest autumnal sport, and look for the standard
orange XML logo. It's impossible for me to give you
a shortcut URL structure, however, because Yahoo! employs redirects.http://channels.lockergnome.com/rss/resources/amazon.phtml.
It's a simple checkbox and submit page, and worth
playing with, although it only supports searching Amazon.com at the
moment.http://723.to/azrssmake.php.http://phobos.apple.com/WebObjects/MZSearch.woa/wa/MRSS/rssGenerator
(see Figure 3-3).
http://blogs.law.harvard.edu/tech/rss, and
let's get on with it.rss version="2.0" element. This is
followed by a single channel element. The
channel element contains the entire feed contents
and all associated metadata.channel within RSS 2.0.
Here are the required subelements:http://blogs.law.harvard.edu/tech/rss, and
let's get on with it.rss version="2.0" element. This is
followed by a single channel element. The
channel element contains the entire feed contents
and all associated metadata.channel within RSS 2.0.
Here are the required subelements:title
<title>RSS and Atom</title>
link
<link>http://www.benhammersley.com</link>
description
<description>This is a nice RSS 2.0 feed of an even nicer weblog</description>
channel/title or
channel/description elements. There are some
existing feeds with HTML within those elements, but these cause a
considerable amount of wailing, and at least a small amount of
gnashing of teeth. Do not do it. Use plain text
only in these elements. The following sidebar,
"Including HTML Within title or
description," gives a fuller account of this, but in
my opinion it's a bad idea.http://www.movabletype.org. In order to
discuss a few important implementation points, Example 4-3 shows a
template for Movable Type that produces an RSS 2.0 feed.<?xml version="1.0"?> <rss version="2.0"> <channel> <title><$MTBlogName$></title> <link><$MTBlogURL$></link> <description><$MTBlogDescription$></description> <language>en-gb</language> <copyright>All content Public Domain</copyright> <managingEditor>ben@benhammersley.com</managingEditor> <webMaster>ben@benhammersley.com</webMaster> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <category domain="http://www.dmoz.org">Reference/Libraries/Library_and_Information_ Science/Technical_Services/Cataloguing/Metadata/RDF/Applications/RSS/</category> <generator>Movable Type/2.5</generator> <lastBuildDate><$MTDate format="%a, %d %b %Y %I:%M:00 GMT"$></lastBuildDate> <ttl>60</ttl> <MTEntries lastn="15"> <item> <title><$MTEntryTitle encode_html="1"$></title> <description><$MTEntryExcerpt encode_html="1"$></description> <link><$MTEntryLink$></link> <comments><$MTEntryLink$></comments> <author><$MTEntryAuthorEmail$></author> <pubDate><$MTEntryDate format="%a, %d %b %Y %I:%M:00 GMT"$></pubDate> <guid isPermaLink="false">GUID:<$MTEntryLink$></g<$MTEntryDate format= "%a%d%b%Y%I:%M"$></guid> </item> </MTEntries> </channel> </rss>
<$MT$> tags to insert information directly
from the Movable Type database into the feed. So far, so simple.<pubDate><$MTEntryDate format="%a, %d %b %Y %I:%M:00 GMT"$></pubDate>
<computing:windows>This is an operating system</computing:windows> <building:windows>This is a hole in a wall</building:windows>
XML::RSS.XML::RSS module is one of the key tools in the
Perl RSS world. It is built on top of
XML::Parser—the basis for many Perl XML
modules—and is object-oriented. Actually,
XML::RSS also supports the creation of the older
versions of RSS, plus RSS 1.0, and it can parse existing feeds, but
in this section we will deal only with its 2.0 creation capabilities.XML::RSS is an open source project.
You can lend a hand, and grab the latest version, at http://sourceforge.net/projects/perl-rsschannel was last updated, and
so on. In Example 5-1, the bold code is the
metadata. You can remove this data, and the feed itself will still
both parse and be useful when displayed as HTML. Like a Hitchcock
cameo, the metadata is in the background, silent, but meaningful to
those who can see it.<rss version="2.0"> <channel> <title>RSS2.0 Example</title> <link>http://www.oreilly.com/example/index.html</link> <description>This is an example RSS2.0 feed</description> <language>en-gb</language> <copyright>Copyright 2004, Oreilly and Associates.</copyright> <managingEditor>editor@oreilly.com</managingEditor> <webMaster>webmaster@oreilly.com</webMaster> <pubDate>03 Apr 04 1500 GMT</pubDate> <lastBuildDate>03 Apr 04 1500 GMT</lastBuildDate> <docs>http://backend.userland.com/rss091</docs> <skipDays> <day>Monday</day> </skipDays> <skipHours>
channel was last updated, and
so on. In Example 5-1, the bold code is the
metadata. You can remove this data, and the feed itself will still
both parse and be useful when displayed as HTML. Like a Hitchcock
cameo, the metadata is in the background, silent, but meaningful to
those who can see it.<rss version="2.0"> <channel> <title>RSS2.0 Example</title> <link>http://www.oreilly.com/example/index.html</link> <description>This is an example RSS2.0 feed</description> <language>en-gb</language> <copyright>Copyright 2004, Oreilly and Associates.</copyright> <managingEditor>editor@oreilly.com</managingEditor> <webMaster>webmaster@oreilly.com</webMaster> <pubDate>03 Apr 04 1500 GMT</pubDate> <lastBuildDate>03 Apr 04 1500 GMT</lastBuildDate> <docs>http://backend.userland.com/rss091</docs> <skipDays> <day>Monday</day> </skipDays> <skipHours> <hour>20</hour> </skipHours> <cloud domain="http://www.oreilly.com" port="80" path= "/RPC2" registerProcedure="pleaseNotify" protocol="XML-RPC" /> <image> <title>RSS0.91 Example</title> <url>http://www.oreilly.com/example/images/logo.gif</url> <link>http://www.oreilly.com/example/index.html</link> <width>88</width> <height>31</height> <description>The World's Leading Technical Publisher</description> </image> <textInput> <title>Search</title> <description>Search the Archives</description> <name>query</name> <link>http://www.oreilly.com/example/search.cgi</link> </textInput> <item> <title>The First Item</title> <link>http://www.oreilly.com/example/001.html</link> <description>This is the first item.</description>
http://www.benhammersley.com
(resource)."rdf:. This
isn't necessary in many RDF documents, but it is the
way they appear in RSS 1.0. For the sake of clarity, I will leave
them in here too. Therefore, for reasons we will discuss later, the
root element of an RDF document is:<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> ... </rdf:RDF>
rdf:about
attribute defines the URI for the element that contains it. Remember,
it is like the subject in a sentence: everything else refers to it.
For example:<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://www.example.org/">
...
</channel>
</rdf:RDF>
channel resource is identified by the
URI http://www.example.org/. Or, more to the
point, everything within the channel element is
referred to by http://www.example.org.<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
xmlns="http://purl.org/rss/1.0/" >
<channel rdf:about="http://www.example.org">
<title>Sausages are tasty for breakfast</title>
<channel>
</rdf:RDF>
channel identified
by the URI http://www.example.org has a
PropertyType title whose value is
Sausages
are
tasty
for
breakfast. Nothing to object to there, then.