Index: tools/devhelp.xsl
===================================================================
--- tools/devhelp.xsl	(revision 0)
+++ tools/devhelp.xsl	(revision 0)
@@ -0,0 +1,93 @@
+<?xml version='1.0'?> <!--*- mode: xml -*-->
+<!-- DevHelp XSL Template, by Maxime Petazzoni <maxime.petazzoni@bulix.org> -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
+  <xsl:output method="xml" indent="yes" encoding="utf-8" />
+
+  <xsl:template match="/">
+
+    <book>
+      <xsl:attribute name="title">
+	<xsl:value-of select="book/title" />
+      </xsl:attribute>
+
+      <xsl:attribute name="name">
+	<xsl:value-of select="book/attribute::id" />
+      </xsl:attribute>
+
+      <xsl:attribute name="version">
+	<xsl:value-of select="book/subtitle" />
+      </xsl:attribute>
+
+      <xsl:attribute name="link">index.html</xsl:attribute>
+
+      <chapters>
+	<xsl:for-each select="book/chapter">
+	  <xsl:call-template name="chapter" />
+	</xsl:for-each>
+      </chapters>
+    </book>
+
+  </xsl:template>
+
+
+  <xsl:template name="chapter">
+    <sub>
+      <xsl:attribute name="name">
+	<xsl:value-of select="title" />
+      </xsl:attribute>
+      <xsl:attribute name="link">
+	<xsl:variable name="key" select="substring-after(@id, 'svn-')" />
+	<xsl:choose>
+	  <xsl:when test="contains($key, 'sect')">
+	    <xsl:variable name="chapter" select="substring-before(substring-after($key, '-'), '-sect')" />
+	    <xsl:variable name="section" select="substring-before(substring-after(concat($key, '.'), 'sect-'), '.')" />
+
+	    <xsl:call-template name="sublink">
+	      <xsl:with-param name="type" select="substring-before($key, '-')" />
+	      <xsl:with-param name="id" select="$chapter" />
+	    </xsl:call-template>
+
+	    <xsl:if test="$section &gt; number('1')">
+	      <xsl:call-template name="sublink">
+		<xsl:with-param name="type" select="translate(substring-before(substring-after($key, concat('ch-', $chapter, '-')), '-'), 'ect', '')" />
+		<xsl:with-param name="id" select="$section" />
+	      </xsl:call-template>
+	    </xsl:if>
+
+	    <xsl:value-of select="concat('.html#', @id)" />
+
+	  </xsl:when>
+	  <xsl:otherwise>
+	    <xsl:variable name="chapter" select="substring-after($key, '-')" />
+	    <xsl:call-template name="sublink">
+	      <xsl:with-param name="type" select="substring-before($key, '-')" />
+	      <xsl:with-param name="id" select="substring-after($key, '-')" />
+	    </xsl:call-template>
+	    <xsl:text>.html</xsl:text>
+	  </xsl:otherwise>
+	</xsl:choose>
+      </xsl:attribute>
+
+    <xsl:for-each select="sect1">
+      <xsl:call-template name="chapter" />
+    </xsl:for-each>
+
+    <xsl:for-each select="sect2">
+      <xsl:call-template name="chapter" />
+    </xsl:for-each>
+
+    </sub>
+  </xsl:template>
+
+  <xsl:template name="sublink">
+    <xsl:choose>
+      <xsl:when test="$id &lt; number('10')">
+	<xsl:value-of select="concat($type, '0', $id)" />
+      </xsl:when>
+      <xsl:otherwise>
+	<xsl:value-of select="concat($type, $id)" />
+      </xsl:otherwise>
+    </xsl:choose>
+
+  </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: Makefile
===================================================================
--- Makefile	(revision 9929)
+++ Makefile	(working copy)
@@ -7,10 +7,12 @@
 SVNVERSION = svnversion
 
 BOOK_TOP = .
+BOOK_DIR = ${BOOK_TOP}/book
 BOOK_HTML_CHUNK_DIR = $(BOOK_DIR)/html-chunk
-BOOK_DIR = ${BOOK_TOP}/book
 BOOK_HTML_TARGET = $(BOOK_DIR)/book.html
 BOOK_HTML_CHUNK_TARGET = $(BOOK_HTML_CHUNK_DIR)/index.html  # index.html is created last
+BOOK_DEVHELP_DIR = $(BOOK_DIR)/devhelp
+BOOK_DEVHELP_TARGET = $(BOOK_DEVHELP_DIR)/svnbook.devhelp
 BOOK_PDF_TARGET = $(BOOK_DIR)/book.pdf
 BOOK_PS_TARGET = $(BOOK_DIR)/book.ps
 BOOK_FO_TARGET = $(BOOK_DIR)/book.fo
@@ -32,6 +34,7 @@
 XSL_FO = ${BOOK_TOP}/tools/fo-stylesheet.xsl
 XSL_HTML = $(BOOK_TOP)/tools/html-stylesheet.xsl
 XSL_HTML_CHUNK = $(BOOK_TOP)/tools/chunk-stylesheet.xsl
+XSL_DEVHELP = $(BOOK_TOP)/tools/devhelp.xsl
 
 RUN_FOP = ${BOOK_TOP}/tools/bin/run-fop.sh
 
@@ -39,12 +42,13 @@
 # Note: --stringparam arguments no longer go here; 
 # see tools/html-stylesheet.xsl and tools/chunk-stylesheet.xsl
 BOOK_HTML_XSLTPROC_OPTS = 
+BOOK_DEVHELP_XSLTPROC_OPTS = 
 
 # Book xsltproc options for PDF and PostScript output
 # BOOK_PDF_XSLTPROC_OPTS = --stringparam page.height 9in --stringparam page.width 6.4in
 # BOOK_PS_XSLTPROC_OPTS = --stringparam page.height 9in --stringparam page.width 6.4in
 
-all: all-html all-pdf all-ps
+all: book-devhelp all-html all-pdf all-ps
 
 install: install-book install-misc-docs
 
@@ -63,7 +67,7 @@
 install-misc-docs: install-misc-html install-misc-pdf \
                    install-misc-ps
 
-clean: book-clean misc-docs-clean
+clean: book-clean misc-docs-clean book-devhelp-clean
 
 $(BOOK_VERSION_SOURCE): book-version
 
@@ -97,6 +101,20 @@
 	cp $(BOOK_DIR)/styles.css $(BOOK_HTML_CHUNK_DIR)
 	cp $(BOOK_IMAGES) $(BOOK_HTML_CHUNK_DIR)
 
+book-devhelp: $(BOOK_DEVHELP_TARGET)
+
+$(BOOK_DEVHELP_TARGET): $(BOOK_ALL_SOURCE) $(BOOK_VERSION_SOURCE) \
+			$(BOOK_DIR)/styles.css $(BOOK_IMAGES)
+	mkdir -p $(BOOK_DEVHELP_DIR)/images
+	$(XSLTPROC) $(BOOK_DEVHELP_XSLTPROC_OPTS) \
+	  --output $(BOOK_DEVHELP_TARGET) \
+	  $(XSL_DEVHELP) $(BOOK_XML_SOURCE)
+	$(XSLTPROC) $(BOOK_HTML_XSLTPROC_OPTS) \
+	  --output $(BOOK_DEVHELP_TARGET) \
+	  $(XSL_HTML_CHUNK) $(BOOK_XML_SOURCE)
+	cp $(BOOK_DIR)/styles.css $(BOOK_DEVHELP_DIR)
+	cp $(BOOK_IMAGES) $(BOOK_DEVHELP_DIR)/images/
+
 book-pdf: $(BOOK_PDF_TARGET)
 
 book-ps: $(BOOK_PS_TARGET)
@@ -135,9 +153,13 @@
 book-clean:
 	rm -f $(BOOK_VERSION_SOURCE)
 	rm -f $(BOOK_HTML_TARGET) $(BOOK_FO_TARGET)
+	rm -f $(BOOK_DEVHELP_TARGET)
 	rm -rf $(BOOK_HTML_CHUNK_DIR)
-	rm -f $(BOOK_PDF_TARGET) $(BOOK_PS_TARGET) 
+	rm -f $(BOOK_PDF_TARGET) $(BOOK_PS_TARGET)
 
+book-devhelp-clean:
+	rm -rf $(BOOK_DEVHELP_DIR)
+
 misc-docs-html: $(MDOCS_HTML_TARGET)
 
 $(MDOCS_HTML_TARGET): $(MDOCS_ALL_SOURCE)

