Converting XML to RSS

Posted by hkw on Stack Overflow See other posts from Stack Overflow or by hkw
Published on 2009-06-30T20:25:47Z Indexed on 2010/06/11 12:02 UTC
Read the original article Hit count: 297

Filed under:
|
|

I've got an xml feed that will be published in one location of our website, and would like to repurpose that for an RSS feed.

A few different pages on the website will also be referencing the same xml - all of those transformations are set up and working.

The base xml file (XMLTEST.xml) is using this structure:

<POST>
  <item>
    <POST_ID>80000852</POST_ID>
    <POST_TITLE>title</POST_TITLE>
    <POST_CHANNEL>I</POST_CHANNEL>
    <POST_DESC>description</POST_DESC>
    <LINK>http://www...</LINK>
    <STOC>N</STOC>
  </item>
</POST>

I'm trying to transform the xml into an RSS feed using the following setup (feed.xml + rss.xsl)

feed.xml:

<?xml-stylesheet href="rss.xsl" type="text/xsl"?>
<RSSChannels>
  <RSSChannel src="XMLTEST.xml"/>
</RSSChannels>

rss.xsl:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" omit-xml-declaration="yes" />

  <xsl:template match="RSSChannels">
    <rss version="2.0">
      <channel>
        <title>site title</title>
        <link></link>
        <description>Site description...</description>
        <xsl:apply-templates />
      </channel>
    </rss>
  </xsl:template>

  <xsl:template match="RSSChannel">
    <xsl:apply-templates select="document(@src)" />
  </xsl:template>

  <xsl:template match="item">
    <xsl:choose>
      <xsl:when test="STOC = 'Y'"></xsl:when>
      <xsl:when test="POST_CHANNEL = 'I'"></xsl:when>
      <xsl:otherwise>
        <item>
          <title>
            <xsl:value-of select="*[local-name()='POST_TITLE']" />
          </title>
          <link>
            <xsl:value-of select="*[local-name()='LINK']" />
          </link>
          <description>
            <xsl:value-of select="*[local-name()='POST_DESC']" />
          </description>
        </item>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

</xsl:stylesheet>

When I try to view the output of feed.xml in Firefox, all of the filtering is applied correctly (sorting out items that shouldn't be published in that channel), but the page outputs as plain text, rather than the usual feed-detection that takes place in Firefox. Any ideas on what I'm missing?

Thanks for any suggestions you can provide.

© Stack Overflow or respective owner

Related posts about Xml

Related posts about rss