Author: fred
Date: 2007-08-01 10:32:12 +0000 (Wed, 01 Aug 2007)
New Revision: 14454

Added:
   trunk/plugins/Echo/src/xml/rss.xsl
Modified:
   trunk/plugins/Echo/src/plugins/echo/SiteGenerator.java
Log:
Adding RSS support

Modified: trunk/plugins/Echo/src/plugins/echo/SiteGenerator.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/SiteGenerator.java      2007-08-01 
03:20:42 UTC (rev 14453)
+++ trunk/plugins/Echo/src/plugins/echo/SiteGenerator.java      2007-08-01 
10:32:12 UTC (rev 14454)
@@ -15,6 +15,7 @@
        private NodesManager nodesManager;
        private Builder parser;
        private XSLTransform transform;
+       private XSLTransform rssTransform;
        private Serializer serializer;
        private Document template;

@@ -27,6 +28,8 @@
 //             template = 
parser.build("/home/fred/prog/soc/trunk/plugins/Echo/src/xml/test.xsl");
                transform = new XSLTransform(template);
                transform.setParameter("basedir", BASE_DIR.getAbsolutePath() + 
"/");
+
+               rssTransform = new 
XSLTransform(parser.build("/home/fred/prog/soc/trunk/plugins/Echo/src/xml/rss.xsl"));

                serializer = new Serializer(System.out); 
                serializer.setIndent(4);
@@ -34,19 +37,13 @@

        }

-       public void transformAndWrite(Document doc, String fileName) throws 
XSLException, IOException {
+       public void writeToFile(nu.xom.Nodes result, String fileName) throws 
XSLException, IOException {

                serializer.setOutputStream(new 
FileOutputStream(OUT_DIR.getPath() + File.separator + fileName));
-               serializer.write(new Document((Element) 
transform.transform(doc).get(0)));
+               serializer.write(new Document((Element) result.get(0)));

        }

-       public void transformAndWrite(Element element, String fileName) throws 
XSLException, IOException {
-       
-               transformAndWrite(new Document(element), fileName);
-       
-       }
-       
        public void generate() throws Exception{        // TODO : Pfouille !!

                OUT_DIR.mkdirs();
@@ -54,7 +51,7 @@
                Nodes nodes = nodesManager.getNodes();
                for(Node node : nodes) {
                        System.out.println(node.getId());
-                       transformAndWrite(node.render().getDoc(), node.getId() 
+ ".html");
+                       
writeToFile(transform.transform(node.render().getDoc()), node.getId() + 
".html");
                }

                Nodes posts = nodes.getPosts();
@@ -65,8 +62,9 @@
                        System.out.println(post.getId() + " (" + 
post.getCreationDate().toString() + ")");
                        index.appendChild(post.render().getRoot());
                }
-               transformAndWrite(index, "index.html");
+               writeToFile(transform.transform(new Document(index)), 
"index.html");

+               writeToFile(rssTransform.transform(new Document(index)), 
"feed.rss");

                System.out.println("\n * Categories *");

@@ -79,8 +77,10 @@
                                if(post.isInCategory(category))
                                        
index.appendChild(post.render().getRoot());
                        }
-                       transformAndWrite(index, "category-" + category + 
".html");
+                       writeToFile(transform.transform(new Document(index)), 
"category-" + category + ".html");
                }

+               
+               
        }
 }
\ No newline at end of file

Added: trunk/plugins/Echo/src/xml/rss.xsl
===================================================================
--- trunk/plugins/Echo/src/xml/rss.xsl                          (rev 0)
+++ trunk/plugins/Echo/src/xml/rss.xsl  2007-08-01 10:32:12 UTC (rev 14454)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet
+        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+        version="1.0">
+<!--
+       TODO :  * encoding
+               * links
+               * other elements
+-->
+<xsl:output
+       method="xml"
+       encoding="ISO-8859-1"
+       media-type="text/xml"
+       indent="yes" />
+
+       <xsl:template match="/index" >
+               <rss version="2.0">
+                       <channel>
+                               <title>My blog</title>
+                               <link>./</link>
+                               <description>Just a blog</description>
+                               <generator>Echo 0.1-alpha</generator>
+                       </channel>
+                       
+                       <xsl:for-each select="node">
+                       <item>
+                               <title><xsl:value-of select="title/text()" 
/></title>
+                               <link><xsl:value-of select="@id" />.html</link>
+                               <description><xsl:copy-of select="content" 
/></description>
+                       </item>
+                       </xsl:for-each>
+               </rss>
+       </xsl:template> 
+
+</xsl:stylesheet>
\ No newline at end of file


Reply via email to