#============================================================= -*-Perl-*- # # Template::Plugin::XML::RSS # # DESCRIPTION # # Template Toolkit plugin which interfaces to Jonathan Eisenzopf's XML::RSS # module. RSS is the Rich Site Summary format. # # AUTHOR # Andy Wardley # # COPYRIGHT # Copyright (C) 2000 Andy Wardley. All Rights Reserved. # # This module is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # #---------------------------------------------------------------------------- # # $Id: RSS.pm,v 2.0 2000/08/10 14:56:11 abw Exp $ # #============================================================================ package Template::Plugin::XML::RSS; require 5.004; use strict; use vars qw( $VERSION ); use base qw( Template::Plugin ); use Template::Plugin; use XML::RSS; $VERSION = sprintf("%d.%02d", q$Revision: 2.0 $ =~ /(\d+)\.(\d+)/); sub load { return $_[0]; } sub new { my ($class, $context, $filename) = @_; return $class->fail('No filename specified') unless $filename; my $rss = XML::RSS->new or return $class->fail('failed to create XML::RSS'); eval { $rss->parsefile($filename) } and not $@ or return $class->fail("failed to parse $filename: $@"); return $rss; } 1; __END__ =head1 NAME Template::Plugin::XML::RSS - Template Toolkit plugin to the XML::RSS module =head1 SYNOPSIS [% USE news = XML.RSS($filename) %] [% FOREACH item = news.items %] [% item.title %] [% item.link %] [% END %] =head1 PRE-REQUISITES This plugin requires that the XML::Parser and XML::RSS modules be installed. These are available from CPAN: http://www.cpan.org/modules/by-module/XML =head1 DESCRIPTION This Template Toolkit plugin provides a simple interface to the XML::RSS module. [% USE news = XML.RSS('mysite.rdf') %] It creates an XML::RSS object, which is then used to parse the RSS file specified as a parameter in the USE directive. A reference to the XML::RSS object is then returned. An RSS (Rich Site Summary) file is typically used to store short news 'headlines' describing different links within a site. This example is extracted from http://slashdot.org/slashdot.rdf. Slashdot:News for Nerds. Stuff that Matters. http://slashdot.org News for Nerds. Stuff that Matters Slashdot http://slashdot.org/images/slashdotlg.gif http://slashdot.org DVD CCA Battle Continues Next Week http://slashdot.org/article.pl?sid=00/01/12/2051208 Matrox to fund DRI Development http://slashdot.org/article.pl?sid=00/01/13/0718219 Mike Shaver Leaving Netscape http://slashdot.org/article.pl?sid=00/01/13/0711258 The attributes of the channel and image elements can be retrieved directly from the plugin object using the familiar dotted compound notation: [% news.channel.title %] [% news.channel.link %] [% news.channel.etc... %] [% news.image.title %] [% news.image.url %] [% news.image.link %] [% news.image.etc... %] The list of news items can be retrieved using the 'items' method: [% FOREACH item = news.items %] [% item.title %] [% item.link %] [% END %] =head1 AUTHOR Andy Wardley Ecre.canon.co.ukE =head1 CREDITS The XML::RSS module, which implements all of the functionality that this plugin delegates to, was written by Jonathan Eisenzopf Eeisen@pobox.comE. This plugin was inspired by an article in Web Techniques by Randal Schwartz . =head1 REVISION $Revision: 2.0 $ =head1 COPYRIGHT Copyright (C) 2000 Andy Wardley. All Rights Reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO L, L, =cut