stefano 2003/08/24 10:52:03
Modified: src/blocks/linotype/samples/stylesheets news2rss-2.0.xslt Log: fixed validation problems with RSS2 and allowed escaped markup in <description> which is rendered correctly by news aggregators such as NetNewsWire. The images link are still broken though, will fix this when it bugs me enough. Revision Changes Path 1.3 +18 -6 cocoon-2.1/src/blocks/linotype/samples/stylesheets/news2rss-2.0.xslt Index: news2rss-2.0.xslt =================================================================== RCS file: /home/cvs/cocoon-2.1/src/blocks/linotype/samples/stylesheets/news2rss-2.0.xslt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- news2rss-2.0.xslt 26 Jun 2003 03:09:49 -0000 1.2 +++ news2rss-2.0.xslt 24 Aug 2003 17:52:03 -0000 1.3 @@ -4,6 +4,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:n="http://www.betaversion.org/linotype/news/1.0" xmlns:h="http://www.w3.org/1999/xhtml" + xmlns:dc="http://purl.org/dc/elements/1.1/" > <xsl:param name="home"/> @@ -11,12 +12,12 @@ <xsl:template match="/"> <rss version="2.0"> - <channel> + <channel> <title>Stefano's Linotype</title> <link>http://www.betaversion.org/~stefano/linotype/</link> <description>Stefano Mazzocchi's weblog</description> - <language>en</language> - <copyright>Copyright 2003 Stefano Mazzocchi. Some rights reserved.</copyright> + <dc:creator>Stefano Mazzocchi</dc:creator> + <dc:rights>Copyright 2003 Stefano Mazzocchi. Some rights reserved.</dc:rights> <lastBuildDate><xsl:value-of select="(//n:[EMAIL PROTECTED] = 'on'])[1]/@creation-fulldate"/></lastBuildDate> <generator>Linotype 1.1</generator> <xsl:apply-templates select="(//n:[EMAIL PROTECTED] = 'on'])[position() < number($count)]"/> @@ -27,11 +28,22 @@ <xsl:template match="n:news"> <item> <title><xsl:value-of select="n:title"/></title> - <link><xsl:value-of select="$home"/>/<xsl:value-of select="../@id"/>/</link> - <description><xsl:apply-templates select="h:body"/></description> - <pubDate><xsl:value-of select="@creation-fulldate"/></pubDate> + <link><xsl:value-of select="$home"/>/<xsl:value-of select="../@id"/>/</link> + <description><xsl:apply-templates select="h:body/node()" mode="encode"/></description> + <xsl:apply-templates select="h:body"/> + <dc:date><xsl:value-of select="@creation-fulldate"/></dc:date> </item> </xsl:template> + + <xsl:template match="*" mode="encode"> + <xsl:text><</xsl:text><xsl:value-of select="name()"/><xsl:apply-templates select="@*" mode="encode"/><xsl:text>></xsl:text> + <xsl:apply-templates select="node()" mode="encode"/> + <xsl:text></</xsl:text><xsl:value-of select="name()"/><xsl:text>></xsl:text> + </xsl:template> + +<xsl:template match="@*" mode="encode"><xsl:text> </xsl:text><xsl:value-of select="name()"/><xsl:text>="</xsl:text><xsl:value-of select="."/><xsl:text>"</xsl:text></xsl:template> + + <xsl:template match="text()" mode="encode"><xsl:value-of select="."/></xsl:template> <xsl:template match="node()|@*"> <xsl:copy>