Robert Fidler <robert.fidler@xxxxxxxxxx> writes:
> Does any one know how I can merge multiple RSS feeds into one feed? I
> have this code, but when I view the feed.xml in IE, it does not have any
> of the XML formating in it, just plain text output all strong out. And
> RSSOwl does not even read it.
>
> feed.xml:
> <?xml version="1.0"?>
> <?xml-stylesheet type="text/xsl" href="merge-rss.xsl"?>
> <feeds>
> <link href="http://digg.com/rss/index.xml"/>
> <link href="http://www.osnews.com/files/recent.xml"/>
> </feeds>
>
> merge-rss.xsl:
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method="xml" version="1.0" encoding="UTF-8"
> indent="yes" omit-xml-declaration="no" media-type="text/xml" />
> <xsl:template match="/">
> <rss version="2.0">
> <channel>
> <title>My Title</title>
> <description>My Description</description>
> <language>en-us</language>
> <link>http://mysite/rss</link>
> <xsl:for-each select="feeds/link/@href">
> <xsl:copy-of select="document(.)/rss/channel/item"/>
> </xsl:for-each>
> </channel>
> </rss>
> </xsl:template>
> </xsl:stylesheet>
Something like:
<xsl:for-each select="feeds/link">
<xsl:variable name="source" select="document(@href)"/>
<xsl:copy-of select="$source//item"/>
</xsl:for-each>
Works for me.
Note that this is essentially what http://www.thefeedstar.net
does. This is my RSS/ATOM aggregator. It's simple but not as simple as
a single sylesheet; you can see it at:
http://www.thefeedstar.net
you do have to register for it first.
Nic Ferrier
|