Author: fred
Date: 2007-07-30 20:38:54 +0000 (Mon, 30 Jul 2007)
New Revision: 14444

Added:
   trunk/plugins/Echo/src/plugins/echo/MarkupRender.java
   trunk/plugins/Echo/src/plugins/echo/SiteGenerator.java
Removed:
   trunk/plugins/Echo/src/plugins/echo/Test.java
   trunk/plugins/Echo/src/plugins/echo/TextRender.java
Modified:
   trunk/plugins/Echo/src/plugins/echo/Echo.java
   trunk/plugins/Echo/src/plugins/echo/Node.java
   trunk/plugins/Echo/src/plugins/echo/Nodes.java
   trunk/plugins/Echo/src/plugins/echo/NodesManager.java
   trunk/plugins/Echo/src/test/0001.xml
   trunk/plugins/Echo/src/test/0002.xml
   trunk/plugins/Echo/src/test/0003.xml
   trunk/plugins/Echo/src/xml/edit.xsl
   trunk/plugins/Echo/src/xml/test.xsl
Log:
Big changes in the site generator

Modified: trunk/plugins/Echo/src/plugins/echo/Echo.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/Echo.java       2007-07-30 20:26:09 UTC 
(rev 14443)
+++ trunk/plugins/Echo/src/plugins/echo/Echo.java       2007-07-30 20:38:54 UTC 
(rev 14444)
@@ -66,8 +66,8 @@
                        NODES_DIR.mkdirs();
                        parser = new Builder();

-//                     Document styleSheet = 
parser.build(getClass().getResourceAsStream("/xml/edit.xsl"));
-                       Document styleSheet = 
parser.build("/home/fred/prog/soc/trunk/plugins/Echo/src/xml/edit.xsl");
+                       Document styleSheet = 
parser.build(getClass().getResourceAsStream("/xml/edit.xsl"));
+//                     Document styleSheet = 
parser.build("/home/fred/prog/soc/trunk/plugins/Echo/src/xml/edit.xsl");
                        i18n.translateXML(styleSheet);

                        transform = new XSLTransform(styleSheet);
@@ -224,7 +224,7 @@
                        page.setTitle(i18n.getString("echo.action.publish"));

                        try {
-                               Test test = new Test();
+                               SiteGenerator test = new SiteGenerator();
                                test.generate();

                                pub.addAttribute(new Attribute("outputdir",(new 
File(BASE_DIR.getPath() + File.separator + "out")).getAbsolutePath() + "/"));
@@ -322,6 +322,10 @@

                                node.setTitle(title);
                                node.setBody(body);
+                               
+                               String[] cats = nodesManager.getCategoriesIds();
+                               for(String cat : cats)
+                                       node.setCategory(cat, 
request.isPartSet("category-" + cat));

                                if(page.countErrors() == 0) {


Copied: trunk/plugins/Echo/src/plugins/echo/MarkupRender.java (from rev 14407, 
trunk/plugins/Echo/src/plugins/echo/TextRender.java)
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/MarkupRender.java                       
        (rev 0)
+++ trunk/plugins/Echo/src/plugins/echo/MarkupRender.java       2007-07-30 
20:38:54 UTC (rev 14444)
@@ -0,0 +1,55 @@
+package plugins.echo;
+
+import org.radeox.api.engine.context.RenderContext;
+import org.radeox.engine.context.BaseRenderContext;
+import org.radeox.api.engine.RenderEngine;
+import org.radeox.engine.BaseRenderEngine;
+
+import nu.xom.Builder;
+import nu.xom.Element;
+import nu.xom.Node;
+import nu.xom.Nodes;
+import nu.xom.ParsingException;
+
+import java.io.IOException;
+
+/**
+*      A very very very crappy class
+*/
+public class MarkupRender{
+       
+       private RenderContext renderContext;
+       private RenderEngine engine;
+
+       public MarkupRender()   {
+               renderContext = new BaseRenderContext();
+               engine = new BaseRenderEngine();
+       }
+
+       public nu.xom.Nodes render(String text) {
+               try {
+                       
+                       String result = engine.render(text, renderContext);
+                       Builder parser = new Builder();
+                       //      FIXME : bug ?
+                       Element renderedContent = parser.build("<rendered>" +  
result + "</rendered>", null).getRootElement();
+                       
+                       nu.xom.Nodes nodes = new Nodes();
+                       while (renderedContent.getChildCount() != 0) {
+                               nu.xom.Node node = renderedContent.getChild(0);
+                               node.detach();
+                               nodes.append(node);
+                       }
+                       
+                       return nodes;
+                       
+               } catch (ParsingException pe) {
+                       pe.printStackTrace(System.err);
+               } catch (IOException ioe) {
+                       ioe.printStackTrace(System.err);
+               }
+               
+               return null;
+       }
+
+}
\ No newline at end of file

Modified: trunk/plugins/Echo/src/plugins/echo/Node.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/Node.java       2007-07-30 20:26:09 UTC 
(rev 14443)
+++ trunk/plugins/Echo/src/plugins/echo/Node.java       2007-07-30 20:38:54 UTC 
(rev 14444)
@@ -127,6 +127,28 @@

        }

+       public boolean isInCategory(String catId) {
+               
+               return (getCategoriesElement().query("category[@id='" + catId + 
"']").size() != 0);
+       
+       }
+       
+       public void setCategory(String catId, boolean value) {
+       
+               if(this.isInCategory(catId)) {
+                       if(!value) {
+                               getCategoriesElement().query("category[@id='" + 
catId + "']").get(0).detach();
+                       }       
+                       
+               } else {
+                       if(value) {
+                               Element category = new Element("category");
+                               category.addAttribute(new Attribute("id", 
catId));
+                               getCategoriesElement().appendChild(category);
+                       }               
+               }
+       }
+       
        public void setCategories(String[] Ids) {

                getCategoriesElement().removeChildren();
@@ -195,10 +217,39 @@
                return doc;
        }

+       /**
+       *       Returns a <strong>copy</strong> of the root element
+       *       @retrun a copy of the root element
+       */
        public Element getRoot() {

                return (Element) getDoc().getRootElement().copy();

        }
+       
+       public Node render() {
+       
+               Node renderedNode = (Node) this.copy();
+               Element content = renderedNode.getContentElement();
+               MarkupRender markupRender = new MarkupRender();
+               
+               nu.xom.Nodes renderedContent = 
markupRender.render(content.getChild(0).toXML());
+               content.removeChildren();
+               for(int i=0; i < renderedContent.size(); i++)
+                       content.appendChild(renderedContent.get(i));
+               
+               return renderedNode;
+                       
+       }

+       /**
+       *       Returns a deep copy of this node
+       *       @return a deep copy of this node
+       */
+       public Node copy() {
+       
+               return new Node((Document) this.doc.copy());
+       
+       }
+       
 }

Modified: trunk/plugins/Echo/src/plugins/echo/Nodes.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/Nodes.java      2007-07-30 20:26:09 UTC 
(rev 14443)
+++ trunk/plugins/Echo/src/plugins/echo/Nodes.java      2007-07-30 20:38:54 UTC 
(rev 14444)
@@ -3,11 +3,12 @@
 import java.util.Vector;
 import java.util.Comparator;
 import java.util.Collections;
+import java.util.Iterator;

 /**
 *      A simple list of nodes
 */
-public class Nodes {
+public class Nodes implements Iterable<Node> {

        private Vector<Node> nodes;

@@ -58,8 +59,23 @@
                return nodes.remove(index);

        }
-                       
+       
        /**
+       *       Returns all the post nodes contained in this list
+       *       @return the posts nodes contained in this list
+       */
+       public Nodes getPosts() {
+       
+               Nodes posts = new Nodes();
+               for(Node n : this) {
+                       if(n.getType() == Node.NodeType.POST_NODE)
+                               posts.append(n);
+               }
+               
+               return posts;
+       }
+       
+       /**
        *       Returns the number of nodes in this list.
        *       @return the number of nodes in this list
        */
@@ -77,7 +93,11 @@
                Collections.sort(nodes, new CreationDateComparator());

        }
-

+       public Iterator<Node> iterator() {
+                       
+               return nodes.iterator();
+               
+       }

 }
\ No newline at end of file

Modified: trunk/plugins/Echo/src/plugins/echo/NodesManager.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/NodesManager.java       2007-07-30 
20:26:09 UTC (rev 14443)
+++ trunk/plugins/Echo/src/plugins/echo/NodesManager.java       2007-07-30 
20:38:54 UTC (rev 14444)
@@ -60,7 +60,18 @@
                return new Node(parser.build(file));

        }
+       
+       public Nodes getNodes() throws IOException, ParsingException {
+       
+               Nodes nodes = new Nodes();
+               String[] ids = getIds();
+               for(String id : ids)
+                       nodes.append(getNodeById(id));
+               
+               return nodes;

+       }
+
        public Nodes getPosts() throws IOException, ParsingException {

                Nodes posts = new Nodes();
@@ -167,6 +178,12 @@

        }

+       public String[] getCategoriesIds() {
+
+               return categories.keySet().toArray(new String[]{});
+               
+       }
+       
        public void newCategory(String name) {

                String id = "";

Copied: trunk/plugins/Echo/src/plugins/echo/SiteGenerator.java (from rev 14407, 
trunk/plugins/Echo/src/plugins/echo/Test.java)
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/SiteGenerator.java                      
        (rev 0)
+++ trunk/plugins/Echo/src/plugins/echo/SiteGenerator.java      2007-07-30 
20:38:54 UTC (rev 14444)
@@ -0,0 +1,86 @@
+package plugins.echo;
+
+import nu.xom.*; 
+import nu.xom.xslt.*;
+
+import java.io.*;
+
+public class SiteGenerator {
+       
+//     public static final File BASE_DIR = new 
File("/home/fred/Freenet/plugins/Echo");
+       public static final File BASE_DIR = Echo.BASE_DIR;
+       public static final File OUT_DIR = new File(BASE_DIR.getAbsolutePath() 
+  File.separator + "out");
+       public static final int POSTS_PER_PAGE = 5;
+       
+       private NodesManager nodesManager;
+       private Builder parser;
+       private XSLTransform transform;
+       private Serializer serializer;
+       private Document template;
+       
+       public SiteGenerator() throws IOException, ParsingException, 
XSLException {
+       
+               nodesManager = new NodesManager(BASE_DIR);
+               parser = new Builder();
+               
+               template = 
parser.build(getClass().getResourceAsStream("/xml/test.xsl"));
+//             template = 
parser.build("/home/fred/prog/soc/trunk/plugins/Echo/src/xml/test.xsl");
+               transform = new XSLTransform(template);
+               transform.setParameter("basedir", BASE_DIR.getAbsolutePath() + 
"/");
+               
+               serializer = new Serializer(System.out); 
+               serializer.setIndent(4);
+               serializer.setMaxLength(128);
+               
+       }
+       
+       public void transformAndWrite(Document doc, 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)));
+               
+       }
+       
+       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();
+               
+               Nodes nodes = nodesManager.getNodes();
+               for(Node node : nodes) {
+                       System.out.println(node.getId());
+                       transformAndWrite(node.render().getDoc(), node.getId() 
+ ".html");
+               }
+               
+               Nodes posts = nodes.getPosts();
+               posts.sortByCreationDate();
+               
+               Element index = new Element("index");
+               for(Node post : posts) {
+                       System.out.println(post.getId() + " (" + 
post.getCreationDate().toString() + ")");
+                       index.appendChild(post.render().getRoot());
+               }
+               transformAndWrite(index, "index.html");
+               
+               
+               System.out.println("\n * Categories *");
+               
+               String[] categories = nodesManager.getCategoriesIds();
+               for(String category : categories) {
+                       System.out.println(category);
+                       index = new Element("index");
+                       index.addAttribute(new Attribute("category", category));
+                       for(Node post : posts) {
+                               if(post.isInCategory(category))
+                                       
index.appendChild(post.render().getRoot());
+                       }
+                       transformAndWrite(index, "category-" + category + 
".html");
+               }
+               
+       }
+}
\ No newline at end of file

Deleted: trunk/plugins/Echo/src/plugins/echo/Test.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/Test.java       2007-07-30 20:26:09 UTC 
(rev 14443)
+++ trunk/plugins/Echo/src/plugins/echo/Test.java       2007-07-30 20:38:54 UTC 
(rev 14444)
@@ -1,59 +0,0 @@
-package plugins.echo;
-
-import nu.xom.*; 
-import nu.xom.xslt.*;
-
-import java.io.*;
-
-public class Test{
-       
-       private static final File BASE_DIR = new 
File("/home/fred/Freenet/plugins/Echo");
-       
-       public void generate() throws Exception{
-
-               File outDir = new File(BASE_DIR.getAbsolutePath() +  
File.separator + "out");
-               outDir.mkdirs();
-
-               NodesManager nodesManager = new NodesManager(BASE_DIR);
-
-               Builder parser = new Builder();
-//             Document styleSheet = 
parser.build(getClass().getResourceAsStream("/xml/test.xsl"));
-               Document styleSheet = 
parser.build("/home/fred/prog/soc/trunk/plugins/Echo/src/xml/test.xsl");
-               XSLTransform transform = new XSLTransform(styleSheet);
-               transform.setParameter("basedir", BASE_DIR.getAbsolutePath() + 
"/");
-
-               Serializer serializer = new Serializer(System.out);
-               serializer.setIndent(4);
-               serializer.setMaxLength(128);
-
-               TextRender render = new TextRender();
-                       
-               String[] ids = nodesManager.getIds();
-               for(String id : ids) {
-
-                       System.out.println(id);
-
-                       Element root = nodesManager.getNodeById(id).getRoot();
-                       Element content = (Element) 
root.query("./content").get(0);
-                       Text contentText = (Text) content.getChild(0);
-
-                       nu.xom.Nodes result = 
render.render(contentText.toXML());
-
-                       contentText.detach();
-                       for (int i=0; i < result.size(); i++) {
-                               content.appendChild(result.get(i));
-                       }
-
-                       nu.xom.Nodes t = transform.transform(new 
Document(root));
-                       serializer.setOutputStream(new 
FileOutputStream(outDir.getPath() + File.separator + id + ".html"));
-                       serializer.write(new Document((Element) t.get(0)));
-
-               }
-               
-
-       }
-//     public static void main(String args[]){
-//             Test test = new Test();
-//             test.generate();
-//     }       
-}
\ No newline at end of file

Deleted: trunk/plugins/Echo/src/plugins/echo/TextRender.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/TextRender.java 2007-07-30 20:26:09 UTC 
(rev 14443)
+++ trunk/plugins/Echo/src/plugins/echo/TextRender.java 2007-07-30 20:38:54 UTC 
(rev 14444)
@@ -1,43 +0,0 @@
-package plugins.echo;
-
-import org.radeox.api.engine.context.RenderContext;
-import org.radeox.engine.context.BaseRenderContext;
-import org.radeox.api.engine.RenderEngine;
-import org.radeox.engine.BaseRenderEngine;
-
-import nu.xom.Builder;
-import nu.xom.Element;
-import nu.xom.Node;
-import nu.xom.Nodes;
-import nu.xom.ParsingException;
-
-import java.io.IOException;
-
-public class TextRender        {
-       
-       private RenderContext renderContext;
-       private RenderEngine engine;
-
-       public TextRender()     {
-               renderContext = new BaseRenderContext();
-               engine = new BaseRenderEngine();
-       }
-
-       public Nodes render(String text) throws ParsingException, IOException {
-
-               String result = engine.render(text, renderContext);
-               Builder parser = new Builder();
-               //      FIXME : bug ?
-               Element renderedContent = parser.build("<rendered>" +  result + 
"</rendered>", null).getRootElement();
-               
-               Nodes nodes = new Nodes();
-               while (renderedContent.getChildCount() != 0) {
-                       Node node = renderedContent.getChild(0);
-                       node.detach();
-                       nodes.append(node);
-               }
-
-               return nodes;
-       }
-
-}
\ No newline at end of file

Modified: trunk/plugins/Echo/src/test/0001.xml
===================================================================
--- trunk/plugins/Echo/src/test/0001.xml        2007-07-30 20:26:09 UTC (rev 
14443)
+++ trunk/plugins/Echo/src/test/0001.xml        2007-07-30 20:38:54 UTC (rev 
14444)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-<node id="0001">
+<node id="0001" type="post">
        <title>Title of the node #0001</title>
-       <created>date</created>
-       <modified>date</modified>
+       <created>2007/4/20</created>
+       <modified>2007/5/19</modified>
        <categories>
                <category id="001" />
                <category id="003" />

Modified: trunk/plugins/Echo/src/test/0002.xml
===================================================================
--- trunk/plugins/Echo/src/test/0002.xml        2007-07-30 20:26:09 UTC (rev 
14443)
+++ trunk/plugins/Echo/src/test/0002.xml        2007-07-30 20:38:54 UTC (rev 
14444)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-<node id="0002">
+<node id="0002" type="page">
        <title>Title</title>
-       <created>date</created>
-       <modified>date</modified>
+       <created>2007/6/15</created>
+       <modified>2007/6/24</modified>
        <categories>
                <category id="002" />
        </categories>

Modified: trunk/plugins/Echo/src/test/0003.xml
===================================================================
--- trunk/plugins/Echo/src/test/0003.xml        2007-07-30 20:26:09 UTC (rev 
14443)
+++ trunk/plugins/Echo/src/test/0003.xml        2007-07-30 20:38:54 UTC (rev 
14444)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
-<node id="0003">
+<node id="0003" type="post">
        <title>Freenet</title>
-       <created>date</created>
-       <modified>date</modified>
+       <created>2007/6/27</created>
+       <modified>2007/6/28</modified>
        <content>
 1 What is Freenet?


Modified: trunk/plugins/Echo/src/xml/edit.xsl
===================================================================
--- trunk/plugins/Echo/src/xml/edit.xsl 2007-07-30 20:26:09 UTC (rev 14443)
+++ trunk/plugins/Echo/src/xml/edit.xsl 2007-07-30 20:38:54 UTC (rev 14444)
@@ -168,16 +168,9 @@
                                <xsl:if 
test="count(document(concat($contextprefix, 
'../categories.xml'))/categories/category) > 0">
                                <fieldset>
                                        <legend><i18n 
key="echo.common.categories" /></legend>
-                                       <xsl:for-each 
select="document(concat($contextprefix, 
'../categories.xml'))/categories/category">
-                                       <input type="checkbox" 
id="category-{@id}" name="category-{@id}" class="inline">
-<!--                                   <xsl:for-each 
select="node/categories/category[@id = '001']"> -->
-<!--<xsl:if test="count(node/categories/category[@id='001']) > 0">
-                                               <xsl:attribute 
name="checked">checked</xsl:attribute>
-                                       </xsl:if>-->
-                                       </input>
-<!--                                   <xsl:value-of 
select="node/categories/category[@id = '001']/@id" /> -->
-                                       <label for="category-{@id}" 
class="inline"><xsl:value-of select="text()" /></label>
-                                       </xsl:for-each>
+                                       <xsl:call-template 
name="categoriesCheckbox">
+                                               <xsl:with-param 
name="nodeCategories" select="node/categories" />
+                                       </xsl:call-template>
                                </fieldset>
                                </xsl:if>
                                <input type="hidden" name="formPassword" 
value="{formpassword/@value}" />
@@ -228,4 +221,21 @@
                </xsl:choose>
                </div>
        </xsl:template>
+       
+       <xsl:template name="categoriesCheckbox">
+               <xsl:param name="nodeCategories" />
+               <xsl:for-each select="document(concat($contextprefix, 
'../categories.xml'))/categories/category">
+               <xsl:sort select="text()" />
+                       <xsl:variable name="id"><xsl:value-of select="@id" 
/></xsl:variable>
+                       
+                       <input type="checkbox" id="category-{@id}" 
name="category-{@id}" class="inline">
+                       <xsl:if test="$nodeCategories/category[@id=$id]">
+                               <xsl:attribute 
name="checked">checked</xsl:attribute>
+                       </xsl:if>
+                       </input>
+                       <label for="category-{@id}" 
class="inline"><xsl:value-of select="text()" /></label>
+               </xsl:for-each>
+               
+       </xsl:template>
+       
 </xsl:stylesheet>
\ No newline at end of file

Modified: trunk/plugins/Echo/src/xml/test.xsl
===================================================================
--- trunk/plugins/Echo/src/xml/test.xsl 2007-07-30 20:26:09 UTC (rev 14443)
+++ trunk/plugins/Echo/src/xml/test.xsl 2007-07-30 20:38:54 UTC (rev 14444)
@@ -15,7 +15,8 @@
        <xsl:param name="basedir" />

        <xsl:variable name="blocksdir"><xsl:value-of select="$basedir" 
/>/blocks/</xsl:variable>
-       
+       <xsl:variable name="categoriesFile"><xsl:value-of select="$basedir" 
/>/categories.xml</xsl:variable>
+
        <xsl:template match="/">
                <html>
                        <head>
@@ -24,7 +25,9 @@
                        </head>
                        <body>
                                <div id="container">
-                                       <div id="header"><h1 id="blog-title">My 
Flog</h1></div>
+                                       <div id="header">
+                                               <h1 id="blog-title"><a 
href="index.html">My Flog</a></h1>
+                                       </div>

                                        <div id="left">
                                        <xsl:call-template name="blocks">
@@ -33,7 +36,7 @@
                                        </div>

                                        <div id="main">
-                                               <h2><xsl:call-template 
name="title" /></h2>
+                                               <h2><xsl:call-template 
name="page-title" /></h2>
                                                <xsl:call-template 
name="content" />
                                        </div>

@@ -44,10 +47,7 @@
                                        </div>

                                        <div id="footer">
-<!--                                   <xsl:call-template name="blocks">
-                                               <xsl:with-param 
name="align">bottom</xsl:with-param>
-                                       </xsl:call-template>
--->                                            Powered by Echo
+                                               Powered by Echo
                                        </div>
                                </div>
                        </body>
@@ -79,7 +79,7 @@
                                <ul class="block categories">
                                <xsl:for-each select="document(concat($basedir, 
'categories.xml'))//category">
                                        <li>
-                                               <a 
href="category/{text()}.html"><xsl:value-of select="text()"/></a>
+                                               <a 
href="category-{@id}.html"><xsl:value-of select="text()"/></a>
                                        </li>
                                </xsl:for-each>
                                </ul>
@@ -105,18 +105,72 @@
                                </xsl:for-each>
                                </ul>
                        </xsl:when>
-                       
+
                        <xsl:otherwise>
-                               <xsl:copy-of select="." />
+<!--                           <xsl:copy-of select="." /> -->
                        </xsl:otherwise>
                </xsl:choose>
        </xsl:template>

        <xsl:template name="content">
-               <xsl:copy-of select="/node/content/node()" />
+               <xsl:choose>
+                       <xsl:when test="/node">
+                               <xsl:copy-of select="/node/content/node()" />
+                       </xsl:when>
+                       <xsl:when test="/index">
+                               <xsl:for-each select="/index/node">
+                                       <div class="post" id="post-{@id}">
+                                               <h2><a 
href="{@id}.html"><xsl:value-of select="title/text()"/></a></h2>
+                                               <div class="entry">
+                                               <xsl:copy-of 
select="content/node()" />
+                                               </div>
+                                               <div class="meta">
+                                               <xsl:value-of 
select="created/text()" />
+                                               <xsl:if 
test="count(categories/category) > 0">
+                                                       |<ul class="categories">
+                                                       <xsl:for-each 
select="categories/category">
+                                                               <li>
+                                                                       <a 
href="category-{@id}.html">
+                                                                       
<xsl:call-template name="categoryName">
+                                                                               
<xsl:with-param name="id" select="@id" /> 
+                                                                       
</xsl:call-template>
+                                                                       </a>
+                                                               </li>
+                                                       </xsl:for-each>
+                                                       </ul>
+                                               </xsl:if>
+                                               </div>
+                                       </div>
+                               </xsl:for-each>
+<!--                           <xsl:copy-of select="." /> -->
+                       </xsl:when>
+               </xsl:choose>
        </xsl:template>

        <xsl:template name="page-title">
-               <xsl:value-of select="/node/title/text()" />
+               <xsl:choose>
+                       <xsl:when test="/node">
+                               <xsl:value-of select="/node/title/text()" />
+                       </xsl:when>
+                       <xsl:when test="/index">
+                               <xsl:choose>
+                                       <xsl:when test="/index/@category">
+                                               <xsl:call-template 
name="categoryName">
+                                                       <xsl:with-param 
name="id" select="/index/@category" />
+                                               </xsl:call-template>
+                                       </xsl:when>
+                                       <xsl:otherwise>
+                                               My Flog
+                                       </xsl:otherwise>
+                               </xsl:choose>
+                       </xsl:when>
+               </xsl:choose>
        </xsl:template>
+       
+       <xsl:template name="categoryName">
+               <xsl:param name="id" />
+               
+               <xsl:value-of 
select="document($categoriesFile)//category[@id=$id]/text()" />
+       </xsl:template>
+       
 </xsl:stylesheet>


Reply via email to