Author: ltheussl
Date: Sat Mar  5 20:36:14 2011
New Revision: 1078346

URL: http://svn.apache.org/viewvc?rev=1078346&view=rev
Log:
split up developer docs, add docs about using the sink API

Added:
    maven/doxia/site/src/site/apt/developers/macros.apt
    maven/doxia/site/src/site/apt/developers/modules.apt
    maven/doxia/site/src/site/apt/developers/sink.apt
Modified:
    maven/doxia/site/src/site/apt/developers/index.apt
    maven/doxia/site/src/site/apt/modules/index.apt
    maven/doxia/site/src/site/pdf.xml
    maven/doxia/site/src/site/site.xml

Modified: maven/doxia/site/src/site/apt/developers/index.apt
URL: 
http://svn.apache.org/viewvc/maven/doxia/site/src/site/apt/developers/index.apt?rev=1078346&r1=1078345&r2=1078346&view=diff
==============================================================================
--- maven/doxia/site/src/site/apt/developers/index.apt (original)
+++ maven/doxia/site/src/site/apt/developers/index.apt Sat Mar  5 20:36:14 2011
@@ -30,196 +30,11 @@ Doxia Developers Centre
 
  This documentation centre is for those that are developing Doxia modules or 
macro.
 
-%{toc|section=1|fromDepth=2|toDepth=2}
+  Currently you can find information on the following topics:
 
-* {Create a New Doxia Module}
+  * {{{./modules.html}Creating Doxia Modules}}
 
- First, you need to create a POM with <doxia-modules> as parent:
+  * {{{./macros.html}Creating Doxia Macros}}
 
-+----
-<project>
-  <parent>
-    <groupId>org.apache.maven.doxia</groupId>
-    <artifactId>doxia-modules</artifactId>
-    <version>1.0</version> <!-- Latest release -->
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <artifactId>doxia-module-my</artifactId>
-  <name>Doxia :: MY Module</name>
-
-  ...
-</project>
-+----
-
- Secondly, you should implement some Doxia classes:
-
- * <MyParser> class
-
-+----
-import org.apache.maven.doxia.parser.AbstractParser;
-
-/**
- * @plexus.component role="org.apache.maven.doxia.parser.Parser" role-hint="my"
- */
-public class MyParser
-    extends AbstractParser
-{
-...
-}
-+----
-
- * <MyParseException> class (optional)
-
-+----
-import org.apache.maven.doxia.parser.ParseException;
-
-public class MyParseException
-    extends ParseException
-{
-...
-}
-+----
-
- * <MySiteModule> class (optional, will be used by doxia-sitetools)
-
-+----
-import org.apache.maven.doxia.module.site.AbstractSiteModule;
-
-/**
- * @plexus.component role="org.apache.maven.doxia.module.site.SiteModule" 
role-hint="my"
- */
-public class MySiteModule
-    extends AbstractSiteModule
-{
-...
-}
-+----
-
- * <MySink> class
-
-+----
-import org.apache.maven.doxia.sink.SinkAdapter;
-
-public class MySink
-    extends SinkAdapter
-{
-...
-}
-+----
-
- * <MySinkFactory> class
-
-+----
-import org.apache.maven.doxia.sink.SinkFactory;
-
-/**
- * @plexus.component role="org.apache.maven.doxia.sink.SinkFactory" 
role-hint="my"
- */
-public class MySinkFactory
-    extends SinkFactory
-{
-...
-}
-+----
-
-  []
-
-* {Create a New Doxia Macro}
-
- You need to add the following plugin configuration to generate the correct 
Plexus <component.xml> file
- for the project containing your macro:
-
-+----
-<project>
-  ...
-  <build>
-    ...
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>descriptor</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      ...
-    </plugins>
-  ...
-  </build>
-  ...
-</project>
-+----
-
- You should implement the <AbstractMacro> class:
-
-+----
-import org.apache.maven.doxia.macro.AbstractMacro;
-
-/**
- * @plexus.component role="org.apache.maven.doxia.macro.Macro" role-hint="my"
- */
-public class MyMacro
-    extends AbstractMacro
-{
-...
-    public void execute( Sink sink, MacroRequest request )
-        throws MacroExecutionException
-    {
-        String myValue = (String) request.getParameter( "myParam" );
-...
-    }
-...
-}
-+----
-
- To use it, you need to write the following markups:
-
-  * APT
-
-+----
-%{my|myParam=myValue} <!-- my is the macro name defined by role-hint -->
-+----
-
-  * XDoc
-
-+----
-<macro name="my"> <!-- my is the required macro name defined by role-hint -->
-  <param name="myParam" value="myValue"/>
-</macro>
-+----
-
-  []
-
-* {Passing attributes to Sink events}
-
-  With Doxia 1.1 a number of methods have been added to the Sink API that
-  allow to pass a set of attributes to many sink events. A typical use case 
would be:
-
-+----
-SinkEventAttributeSet atts = new SinkEventAttributeSet();
-atts.addAttribute( SinkEventAttributes.ALIGN, "center" );
-
-sink.paragraph( atts );
-+----
-
-  What kind of attributes are supported depends on the event and the sink
-  implementation. The sink API specifies a list of suggested attribute
-  names that sinks are expected to recognize, and parsers are expected to use
-  preferably when emitting events.
-
-
-* {References}
-
-  * {{{../modules/index.html}Doxia Modules Guide}}
+  * {{{./sink.html}Using the Doxia Sink API}}
 
-  * {{{../macros/index.html}Doxia Macros Guide}}
-
-  * {{{../doxia/apidocs/index.html}Doxia API Reference}}
-
-  * {{{../doxia-sitetools/apidocs/index.html}Doxia Sitetools API Reference}}
-
-  []

Added: maven/doxia/site/src/site/apt/developers/macros.apt
URL: 
http://svn.apache.org/viewvc/maven/doxia/site/src/site/apt/developers/macros.apt?rev=1078346&view=auto
==============================================================================
--- maven/doxia/site/src/site/apt/developers/macros.apt (added)
+++ maven/doxia/site/src/site/apt/developers/macros.apt Sat Mar  5 20:36:14 2011
@@ -0,0 +1,109 @@
+ -----
+ Doxia Developers Centre
+ -----
+ Vincent Siveton
+ ------
+ 2008-03-02
+ ------
+
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements.  See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership.  The ASF licenses this file
+~~ to you under the Apache License, Version 2.0 (the
+~~ "License"); you may not use this file except in compliance
+~~ with the License.  You may obtain a copy of the License at
+~~
+~~   http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing,
+~~ software distributed under the License is distributed on an
+~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~ KIND, either express or implied.  See the License for the
+~~ specific language governing permissions and limitations
+~~ under the License.
+
+~~ NOTE: For help with the syntax of this file, see:
+~~ http://maven.apache.org/doxia/references/apt-format.html
+
+Create a New Doxia Macro
+
+ You need to add the following plugin configuration to generate the correct 
Plexus <component.xml> file
+ for the project containing your macro:
+
++----
+<project>
+  ...
+  <build>
+    ...
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      ...
+    </plugins>
+  ...
+  </build>
+  ...
+</project>
++----
+
+ You should implement the <AbstractMacro> class:
+
++----
+import org.apache.maven.doxia.macro.AbstractMacro;
+
+/**
+ * @plexus.component role="org.apache.maven.doxia.macro.Macro" role-hint="my"
+ */
+public class MyMacro
+    extends AbstractMacro
+{
+...
+    public void execute( Sink sink, MacroRequest request )
+        throws MacroExecutionException
+    {
+        String myValue = (String) request.getParameter( "myParam" );
+...
+    }
+...
+}
++----
+
+ To use it, you need to write the following markups:
+
+  * APT
+
++----
+%{my|myParam=myValue} <!-- my is the macro name defined by role-hint -->
++----
+
+  * XDoc
+
++----
+<macro name="my"> <!-- my is the required macro name defined by role-hint -->
+  <param name="myParam" value="myValue"/>
+</macro>
++----
+
+  []
+
+* {References}
+
+  * {{{../modules/index.html}Doxia Modules Guide}}
+
+  * {{{../macros/index.html}Doxia Macros Guide}}
+
+  * {{{../doxia/apidocs/index.html}Doxia API Reference}}
+
+  * {{{../doxia-sitetools/apidocs/index.html}Doxia Sitetools API Reference}}
+
+  []

Added: maven/doxia/site/src/site/apt/developers/modules.apt
URL: 
http://svn.apache.org/viewvc/maven/doxia/site/src/site/apt/developers/modules.apt?rev=1078346&view=auto
==============================================================================
--- maven/doxia/site/src/site/apt/developers/modules.apt (added)
+++ maven/doxia/site/src/site/apt/developers/modules.apt Sat Mar  5 20:36:14 
2011
@@ -0,0 +1,132 @@
+ -----
+ Doxia Developers Centre
+ -----
+ Vincent Siveton
+ ------
+ 2008-03-02
+ ------
+
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements.  See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership.  The ASF licenses this file
+~~ to you under the Apache License, Version 2.0 (the
+~~ "License"); you may not use this file except in compliance
+~~ with the License.  You may obtain a copy of the License at
+~~
+~~   http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing,
+~~ software distributed under the License is distributed on an
+~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~ KIND, either express or implied.  See the License for the
+~~ specific language governing permissions and limitations
+~~ under the License.
+
+~~ NOTE: For help with the syntax of this file, see:
+~~ http://maven.apache.org/doxia/references/apt-format.html
+
+Create a New Doxia Module
+
+ First, you need to create a POM with <doxia-modules> as parent:
+
++----
+<project>
+  <parent>
+    <groupId>org.apache.maven.doxia</groupId>
+    <artifactId>doxia-modules</artifactId>
+    <version>1.0</version> <!-- Latest release -->
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>doxia-module-my</artifactId>
+  <name>Doxia :: MY Module</name>
+
+  ...
+</project>
++----
+
+ Secondly, you should implement some Doxia classes:
+
+ * <MyParser> class
+
++----
+import org.apache.maven.doxia.parser.AbstractParser;
+
+/**
+ * @plexus.component role="org.apache.maven.doxia.parser.Parser" role-hint="my"
+ */
+public class MyParser
+    extends AbstractParser
+{
+...
+}
++----
+
+ * <MyParseException> class (optional)
+
++----
+import org.apache.maven.doxia.parser.ParseException;
+
+public class MyParseException
+    extends ParseException
+{
+...
+}
++----
+
+ * <MySiteModule> class (optional, will be used by doxia-sitetools)
+
++----
+import org.apache.maven.doxia.module.site.AbstractSiteModule;
+
+/**
+ * @plexus.component role="org.apache.maven.doxia.module.site.SiteModule" 
role-hint="my"
+ */
+public class MySiteModule
+    extends AbstractSiteModule
+{
+...
+}
++----
+
+ * <MySink> class
+
++----
+import org.apache.maven.doxia.sink.SinkAdapter;
+
+public class MySink
+    extends SinkAdapter
+{
+...
+}
++----
+
+ * <MySinkFactory> class
+
++----
+import org.apache.maven.doxia.sink.SinkFactory;
+
+/**
+ * @plexus.component role="org.apache.maven.doxia.sink.SinkFactory" 
role-hint="my"
+ */
+public class MySinkFactory
+    extends SinkFactory
+{
+...
+}
++----
+
+  []
+
+
+* {References}
+
+  * {{{../modules/index.html}Doxia Modules Guide}}
+
+  * {{{../macros/index.html}Doxia Macros Guide}}
+
+  * {{{../doxia/apidocs/index.html}Doxia API Reference}}
+
+  * {{{../doxia-sitetools/apidocs/index.html}Doxia Sitetools API Reference}}
+
+  []

Added: maven/doxia/site/src/site/apt/developers/sink.apt
URL: 
http://svn.apache.org/viewvc/maven/doxia/site/src/site/apt/developers/sink.apt?rev=1078346&view=auto
==============================================================================
--- maven/doxia/site/src/site/apt/developers/sink.apt (added)
+++ maven/doxia/site/src/site/apt/developers/sink.apt Sat Mar  5 20:36:14 2011
@@ -0,0 +1,210 @@
+ -----
+ Doxia Developers Centre
+ -----
+ Vincent Siveton
+ ------
+ 2008-03-02
+ ------
+
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements.  See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership.  The ASF licenses this file
+~~ to you under the Apache License, Version 2.0 (the
+~~ "License"); you may not use this file except in compliance
+~~ with the License.  You may obtain a copy of the License at
+~~
+~~   http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing,
+~~ software distributed under the License is distributed on an
+~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~ KIND, either express or implied.  See the License for the
+~~ specific language governing permissions and limitations
+~~ under the License.
+
+~~ NOTE: For help with the syntax of this file, see:
+~~ http://maven.apache.org/doxia/references/apt-format.html
+
+Using the Doxia Sink API
+
+%{toc|section=1|fromDepth=2|toDepth=2}
+
+* {Transforming documents}
+
+  Doxia can be used to transform an arbitrary input document to any supported 
output format.
+  The following snippet shows how to use a Doxia <Parser> to transform an apt 
file to html:
+
++----
+  File userDir = new File( System.getProperty ( "user.dir" ) );
+  File inputFile = new File( userDir, "test.apt" );
+  File outputFile = new File( userDir, "test.html" );
+
+  SinkFactory sinkFactory = (SinkFactory) lookup( SinkFactory.ROLE, "html" ); 
// Plexus lookup
+
+  Sink sink = sinkFactory.createSink( outputFile.getParentFile(), 
outputFile.getName() ) );
+
+  Parser parser = (AptParser) lookup( Parser.ROLE, "apt" ); // Plexus lookup
+
+  Reader reader = ReaderFactory.newReader( inputFile, "UTF-8" );
+
+  parser.parse( reader, sink );
++----
+
+  It is recommended that you use {{{http://plexus.codehaus.org/}Plexus}} to 
look up the parser. In principle
+  you could instantiate the parser directly ( <<<Parser parser = new 
AptParser();>>> )
+  but then some special features like macros will not be available.
+
+  You could also use the 
{{{http://maven.apache.org/doxia/doxia-tools/doxia-converter/index.html}Doxia 
Converter Tool}}
+  to parse a given file/dir to another file/dir.
+
+
+* {Generating documents}
+
+  The snippet below gives a simple example of how
+  to generate a document using the Doxia Sink API.
+
++----
+    /**
+     * Generate a simple document and emit it
+     * into the specified sink. The sink is flushed but not closed.
+     *
+     * @param sink The sink to receive the events.
+     */
+    public static void generate( Sink sink )
+    {
+        sink.head();
+
+        sink.title();
+        sink.text( "Title" );
+        sink.title_();
+
+        sink.author();
+        sink.text( "Author" );
+        sink.author_();
+
+        sink.date();
+        sink.text( "Date" );
+        sink.date_();
+
+        sink.head_();
+
+
+        sink.body();
+
+        sink.paragraph();
+        sink.text( "A paragraph of text." );
+        sink.paragraph_();
+
+        sink.section1();
+        sink.sectionTitle1();
+        sink.text( "Section title" );
+        sink.sectionTitle1_();
+
+        sink.paragraph();
+        sink.text( "Paragraph in section." );
+        sink.paragraph_();
+
+        sink.section1_();
+
+        sink.body_();
+
+        sink.flush();
+    }
++----
+
+  A more complete example that also shows the 'canonical' order of events to 
use when generating
+  a document, can be found in the Doxia
+  
{{{./doxia/doxia-core/xref-test/org/apache/maven/doxia/sink/SinkTestDocument.html}SinkTestDocument}}
+  class.
+
+
+* {Passing attributes to Sink events}
+
+  With Doxia 1.1 a number of methods have been added to the Sink API that
+  allow to pass a set of attributes to many sink events. A typical use case 
would be:
+
++----
+SinkEventAttributeSet atts = new SinkEventAttributeSet();
+atts.addAttribute( SinkEventAttributes.ALIGN, "center" );
+
+sink.paragraph( atts );
++----
+
+  What kind of attributes are supported depends on the event and the sink
+  implementation. The sink API specifies a list of suggested attribute
+  names that sinks are expected to recognize, and parsers are expected to use
+  preferably when emitting events.
+
+
+* {Avoid sink.rawText!}
+
+  In <<Doxia 1.0>> it was a common practice to use sink.rawText() to generate 
elements that
+  were not supported by the Sink API. For example, the following snippet could 
be used
+  to generate a styled HTML \<div\> block:
+
++----
+sink.RawText( "<div style=\"cool\">" );
+sink.text( "A text with a cool style." );
+sink.rawText( "</div>" );
++----
+
+  This has a major drawback however: it only works if the receiving Sink is a 
HTML Sink.
+  In other words, the above method will not work for target documents in any 
other format than HTML
+  (think of the FO Sink to generate a pdf, or a LaTeX sink,...).
+
+  In <<Doxia 1.1>> a new method unknown() was added to the Sink API that can 
be used to emit
+  an arbitrary event without making special assumptions about the receiving 
Sink.
+  Depending on the parameters, a Sink may decide whether or not to process the 
event,
+  emit it as raw text, as a comment, log it, etc.
+
+  The correct way to generate the above \<div\> block is now:
+
++----
+SinkEventAttributeSet atts = new SinkEventAttributeSet();
+atts.addAttribute( SinkEventAttributes.STYLE, "cool" );
+
+sink.unknown( "div", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_START )}, 
atts );
+sink.text( "A text with a cool style." );
+sink.unknown( "div", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, 
null );
++----
+
+  Read the javadocs of the unknown() method in the
+  
{{{./doxia/doxia-sink-api/apidocs/org/apache/maven/doxia/sink/Sink.html}Sink}} 
interface and the
+  
{{{./doxia/doxia-core/apidocs/org/apache/maven/doxia/sink/XhtmlBaseSink.html}XhtmlbaseSink}}
+  for information on the method parameters.
+  Note that an arbitrary sink may be expected to ignore the unknown event 
completely!
+
+  <<In general, the rawText method should be avoided alltogether when emitting 
events into an arbitrary Sink.>>
+
+
+* {How to inject javascript code into HTML}
+
+  Related to the above, here is the correct way of injecting a javascript 
snippet into a Sink:
+
++----
+// the javascript code is emitted within a commented CDATA section
+// so we have to start with a newline and comment the CDATA closing in the end
+// note that the sink will replace the newline by the system EOL
+String javascriptCode = "\n function javascriptFunction() {...} \n //";
+
+SinkEventAttributeSet atts = new SinkEventAttributeSet();
+atts.addAttribute( SinkEventAttributes.TYPE, "text/javascript" );
+
+sink.unknown( "script", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_START 
)}, atts );
+sink.unknown( "cdata", new Object[]{new Integer( HtmlMarkup.CDATA_TYPE ), 
javascriptCode }, null );
+sink.unknown( "script", new Object[]{new Integer( HtmlMarkup.TAG_TYPE_END )}, 
null );
++----
+
+
+* {References}
+
+  * {{{../modules/index.html}Doxia Modules Guide}}
+
+  * {{{../macros/index.html}Doxia Macros Guide}}
+
+  * {{{../doxia/apidocs/index.html}Doxia API Reference}}
+
+  * {{{../doxia-sitetools/apidocs/index.html}Doxia Sitetools API Reference}}
+
+  []

Modified: maven/doxia/site/src/site/apt/modules/index.apt
URL: 
http://svn.apache.org/viewvc/maven/doxia/site/src/site/apt/modules/index.apt?rev=1078346&r1=1078345&r2=1078346&view=diff
==============================================================================
--- maven/doxia/site/src/site/apt/modules/index.apt (original)
+++ maven/doxia/site/src/site/apt/modules/index.apt Sat Mar  5 20:36:14 2011
@@ -33,7 +33,6 @@ Doxia Modules Guide
  is just a collection of reference links for the individual formats.
 
 %{toc|section=1|fromDepth=2|toDepth=2}
-%{toc|section=2|fromDepth=1|toDepth=1}
 
 
 * {APT}
@@ -168,30 +167,3 @@ Doxia Modules Guide
   * {{{http://www.w3.org/TR/xhtml1/}XHTML 1.0 Specification}}
 
   []
-
-{Using A Doxia Module}
-
- The following snippet shows how to use a Doxia <Parser> to transform an apt 
file to html:
-
-+----
-  File userDir = new File( System.getProperty ( "user.dir" ) );
-  File inputFile = new File( userDir, "test.apt" );
-  File outputFile = new File( userDir, "test.html" );
-
-  SinkFactory sinkFactory = (SinkFactory) lookup( SinkFactory.ROLE, "html" ); 
// Plexus lookup
-
-  Sink sink = sinkFactory.createSink( outputFile.getParentFile(), 
outputFile.getName() ) );
-
-  Parser parser = (AptParser) lookup( Parser.ROLE, "apt" ); // Plexus lookup
-
-  Reader reader = ReaderFactory.newReader( inputFile, "UTF-8" );
-
-  parser.parse( reader, sink );
-+----
-
-  It is recommended that you use {{{http://plexus.codehaus.org/}Plexus}} to 
look up the parser. In principle
-  you could instantiate the parser directly ( <<<Parser parser = new 
AptParser();>>> )
-  but then some special features like macros will not be available.
-
-  You could also use the 
{{{http://maven.apache.org/doxia/doxia-tools/doxia-converter/index.html}Doxia 
Converter Tool}}
-  to parse a given file/dir to another file/dir.

Modified: maven/doxia/site/src/site/pdf.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/site/src/site/pdf.xml?rev=1078346&r1=1078345&r2=1078346&view=diff
==============================================================================
--- maven/doxia/site/src/site/pdf.xml (original)
+++ maven/doxia/site/src/site/pdf.xml Sat Mar  5 20:36:14 2011
@@ -51,6 +51,9 @@
     <item name="Doxia Macros Guide" ref="macros/index.html"/>
     <item name="Writing Books" ref="book/index.html"/>
     <item name="Developer Centre" ref="developers/index.html"/>
+    <item name="Create a Doxia Module" ref="developers/modules.html"/>
+    <item name="Create a Doxia Macro" ref="developers/macros.html"/>
+    <item name="Using the Sink API" ref="developers/sink.html"/>
     <item name="Integration With Maven" 
ref="developers/maven-integration.html"/>
       <!-- MSITE-333: remove double-amp when fixed -->
       <item name="Issues &amp;amp; Gotchas" ref="issues/index.html"/>

Modified: maven/doxia/site/src/site/site.xml
URL: 
http://svn.apache.org/viewvc/maven/doxia/site/src/site/site.xml?rev=1078346&r1=1078345&r2=1078346&view=diff
==============================================================================
--- maven/doxia/site/src/site/site.xml (original)
+++ maven/doxia/site/src/site/site.xml Sat Mar  5 20:36:14 2011
@@ -69,7 +69,11 @@ under the License.
     </menu>
 
     <menu name="Developer Docs">
-      <item name="Developer Centre" href="developers/index.html"/>
+      <item name="Developer Centre" href="developers/index.html" 
collapse="true">
+        <item name="Create a Doxia Module" href="developers/modules.html"/>
+        <item name="Create a Doxia Macro" href="developers/macros.html"/>
+        <item name="Using the Sink API" href="developers/sink.html"/>
+      </item>
       <item name="Doxia 1.1.x" href="doxia/index.html"/>
       <item name="Doxia Sitetools 1.1.x" href="doxia-sitetools/index.html"/>
       <item name="Doxia 1.0.x" href="doxia-1.0.x/index.html"/>


Reply via email to