[freenet-cvs] r14454 - in trunk/plugins/Echo/src: plugins/echo xml

fred at freenetproject.org fred at freenetproject.org
Wed Aug 1 10:32:13 UTC 2007


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




More information about the cvs mailing list