I haven't tried the two solutions presented above (which may well be excellent), but I find XSLT to be a cleaner way of doing XML-to-XML transformations such as this one. Here's what works for me...
Save the following code as e2rss.xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<rss version="2.0">
<channel>
<title>E2 New Writeups</title>
<link>http://www.everything2.com/</link>
<description>Everything2 New Writeups Feed.</description>
<language>en-us</language>
<generator>motiz88's e2rss.xsl</generator>
<ttl>5</ttl>
<xsl:for-each select="newwriteups/wu">
<item>
<title><xsl:value-of select="e2link"/> [<xsl:value-of select="author/e2link"/>]</title>
<link>http://www.everything2.com/index.pl?node_id=<xsl:value-of select="e2link/@node_id"/></link>
</item>
</xsl:for-each>
</channel>
</rss>
</xsl:template>
</xsl:stylesheet>
This stylesheet, when applied to the document at New Writeups XML Ticker, generates a standard RSS 2.0 feed. All that's left now is to apply the stylesheet to the actual data. This necessarily1 involves some server-side processing - the following PHP 4/5 code2 should do the trick. Save it as e2rss.php on a web server (Windows/Linux/Mac/Toaster - just make sure it has PHP 5 and the XSL extension installed, or PHP 4 and the XSLT extension), in the same directory as e2rss.xsl, and point your favorite RSS reader at its URL.
<?php
$e2feed='http://www.everything2.com/index.pl?node_id=1291781';
$xslfile='e2rss.xsl';
header('Content-Type: text/xml');
if (extension_loaded('xsl')) { // PHP >= 5.0.0
$xml = new DomDocument('1.0','iso-8859-1');
$xml->load($e2feed);
$xsl = new DomDocument;
$xsl->load($xslfile);
$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);
echo($proc->transformToXML($xml));
}
else if (extension_loaded('xslt')) { // PHP >= 4.0.3
$xml=implode('',file($e2feed));
$xsl=implode('',file($xslfile));
$arguments = array(
'/_xml' => $xml,
'/_xsl' => $xsl
);
$xh = xslt_create();
echo(xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments));
xsltfree($xh);
}
else
echo('<rss><channel><item><title>Install the XSL (PHP 5) or XSLT (PHP 4) extension. Your PHP version is ' . PHP_VERSION . '.</title></item></channel></rss>');
?>
1 I first tried simply sticking <?xml-stylesheet type="text/xsl" href="e2rss.xsl"?> on to the existing XML, thinking it should at least work as a Live Bookmark in Firefox, but, well, it didn't.
2 I wrote the PHP 4 part from examples, so it should work, but I could not test it anywhere. Feel free to send corrections or equivalent code for other languages/platforms.