/usr/share/perl5/Template/Plugin/XML/RSS.pm is in libtemplate-plugin-xml-perl 2.17-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | #============================================================= -*-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 <abw@cpan.org>
#
# COPYRIGHT
# Copyright (C) 2000-2006 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.
#
#============================================================================
package Template::Plugin::XML::RSS;
use strict;
use warnings;
use base 'Template::Plugin';
use XML::RSS;
our $VERSION = 2.66;
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');
# Attempt to determine if $filename is an XML string or
# a filename. Based on code from the XML.XPath plugin.
eval {
if ($filename =~ /\</) {
$rss->parse($filename);
}
else {
$rss->parsefile($filename)
}
} and not $@
or return $class->fail("failed to parse $filename: $@");
return $rss;
}
1;
__END__
=head1 NAME
Template::Plugin::XML::RSS - Plugin interface to XML::RSS
=head1 SYNOPSIS
[% USE news = XML.RSS('news.rdf') %]
[% FOREACH item IN news.items %]
[% item.title %]
[% item.link %]
[% END %]
=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.
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
<title>Slashdot:News for Nerds. Stuff that Matters.</title>
<link>http://slashdot.org</link>
<description>News for Nerds. Stuff that Matters</description>
</channel>
<image>
<title>Slashdot</title>
<url>http://slashdot.org/images/slashdotlg.gif</url>
<link>http://slashdot.org</link>
</image>
<item>
<title>DVD CCA Battle Continues Next Week</title>
<link>http://slashdot.org/article.pl?sid=00/01/12/2051208</link>
</item>
<item>
<title>Matrox to fund DRI Development</title>
<link>http://slashdot.org/article.pl?sid=00/01/13/0718219</link>
</item>
<item>
<title>Mike Shaver Leaving Netscape</title>
<link>http://slashdot.org/article.pl?sid=00/01/13/0711258</link>
</item>
</rdf:RDF>
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 IN news.items %]
[% item.title %]
[% item.link %]
[% END %]
=head1 AUTHORS
This plugin was written by Andy Wardley inspired by an article in Web
Techniques by Randal Schwartz.
The XML::RSS module, which implements all of the functionality that
this plugin delegates to, was written by Jonathan Eisenzopf.
=head1 COPYRIGHT
Copyright (C) 1996-2006 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<Template::Plugin>, L<XML::RSS>, L<XML::Parser>
|