2009-06-30 11 views
1

Ich habe einen XML-Feed, der an einem Ort unserer Website veröffentlicht wird und diesen für einen RSS-Feed wiederverwenden möchte.Konvertieren von XML in RSS

Ein paar verschiedene Seiten auf der Website verweisen auch auf die gleiche XML - alle diese Transformationen sind eingerichtet und arbeiten.

Die Basis XML-Datei (XMLTEST.xml) wird mit dieser Struktur:

<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> 

Ich versuche, die XML-Daten in einen RSS-Feed zu verwandeln mit dem folgende 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> 

Wenn ich versuche, die Ausgabe von feed.xml in Firefox anzuzeigen, wird die gesamte Filterung korrekt angewendet (Elemente sortiert, die in diesem Kanal nicht veröffentlicht werden sollen), aber die Seite wird als normaler Text ausgegeben Feed-Erkennung, die in Firefox stattfindet. Irgendwelche Ideen, was ich vermisse?

Vielen Dank für Ihre Vorschläge.

Antwort