[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Future freeze exception for docbook-xsl, docbook-xsl-ns, docbook-xsl-doc 1.76.0



Hi,

Finally the first release candidate of docbook-xsl 1.76.0 has been
released and I would like to get version 1.76.0 into Squeeze.

The difference between 1.75.2 in Debian and the upcoming 1.76.0 is
rather large, but the changes almost only include bug-fixes (several
dozens) and translation updates. The other stuff, that has been changed
is: clean HTML output and faster processing (regarding the localization
templates). The newly added webhelp stuff has been removed and was not
added to the packages. So the package contents did not change.

Version 1.76.0 RC1 has been uploaded to experimental yesterday and I
encourage everybody to test it.

I did not add patches for the reported issues to the package in
unstable, because I knew, how many bug-fixes are included in 1.76.0, and
backporting just those, for which bug-reports exist at bugs.d.o, did not
make sense to me (and applying all is pretty similar to prepare and ship
1.76.0). IMHO it makes more sense to ship the latest release here. So I
kindly request your comments.

I attach the relevant diff (from upstream VCS) between release 1.75.2
and 1.76.0 (r8900).

Regards, Daniel
Index: eclipse/eclipse3.xsl
===================================================================
--- eclipse/eclipse3.xsl	(Revision 0)
+++ eclipse/eclipse3.xsl	(Revision 8900)
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+		xmlns:ng="http://docbook.org/docbook-ng"; 
+		xmlns:db="http://docbook.org/ns/docbook";
+		xmlns:exsl="http://exslt.org/common"; version="1.0"
+		exclude-result-prefixes="exsl db ng">
+
+<!-- 
+********************************************************************************
+     $Id$
+
+     This file is part of the XSL DocBook Stylesheet distribution.
+     See ../README or http://docbook.sf.net/release/xsl/current/ for
+     copyright and other information.
+
+ * Copyright (c) 2008 Standards for Technology in Automotive Retail and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     David Carver - STAR - Extended existing eclipse.xsl file to produce valid
+ *                           eclipse 3.3 plugin.xml with a manifest file.
+ *******************************************************************************
+ -->
+  
+  <xsl:import href="eclipse.xsl"/>
+
+  <xsl:param name="eclipse.manifest">1</xsl:param>
+  <xsl:param name="create.plugin.xml">1</xsl:param>
+  
+  <xsl:template name="plugin.xml">
+    <xsl:if test="$create.plugin.xml != 0">
+      <xsl:call-template name="write.chunk">
+	<xsl:with-param name="filename">
+	  <xsl:if test="$manifest.in.base.dir != 0">
+	    <xsl:value-of select="$base.dir" />
+	  </xsl:if>
+	  <xsl:value-of select="'plugin.xml'" />
+	</xsl:with-param>
+	<xsl:with-param name="method" select="'xml'" />
+	<xsl:with-param name="encoding" select="'utf-8'" />
+	<xsl:with-param name="indent" select="'yes'" />
+	<xsl:with-param name="quiet" select="$chunk.quietly"/>
+	<xsl:with-param name="content">
+	  <xsl:choose>
+	    
+	    <xsl:when test="$eclipse.manifest = '1'">
+	      <plugin>
+		<extension point="org.eclipse.help.toc">
+		  <toc file="toc.xml" primary="true" />
+		</extension>
+		<xsl:if test="$generate.index = 1">
+		  <extension point="org.eclipse.help.index">
+		    <index file="index.xml"/>
+		 </extension>
+		</xsl:if>
+	      </plugin>
+	      <xsl:call-template name="write.chunk">
+		<xsl:with-param name="filename">
+		  <xsl:if test="$manifest.in.base.dir != 0">
+		    <xsl:value-of select="$base.dir" />
+		  </xsl:if>
+		  <xsl:value-of select="'META-INF/'" />
+		  <xsl:value-of select="'MANIFEST.MF'" />
+		</xsl:with-param>
+		<xsl:with-param name="method" select="'text'" />
+		<xsl:with-param name="encoding" select="'utf-8'" />
+		<xsl:with-param name="quiet" select="$chunk.quietly"/>
+		<xsl:with-param name="content">
+		  <xsl:call-template name="manifest.content"/>
+		</xsl:with-param>
+	      </xsl:call-template>
+	    </xsl:when>
+
+	    <xsl:otherwise>
+	      <plugin name="{$eclipse.plugin.name}" id="{$eclipse.plugin.id}"
+		      version="1.0" provider-name="{$eclipse.plugin.provider}">
+		<extension point="org.eclipse.help.toc">
+		  <toc file="toc.xml" primary="true" />
+		</extension>
+		<xsl:if test="$generate.index = 1">
+		  <extension point="org.eclipse.help.index">
+		  <index file="index.xml"/>
+		  </extension>
+		</xsl:if>
+	      </plugin>
+	    </xsl:otherwise>
+
+	  </xsl:choose>
+	</xsl:with-param>
+      </xsl:call-template>	    
+    </xsl:if>
+  </xsl:template>
+
+  <xsl:template name="manifest.content">
+    <xsl:text>Manifest-Version: 1.0</xsl:text>
+    <xsl:text>&#xA;</xsl:text>
+    <xsl:text>Bundle-Version: 1.0</xsl:text>
+    <xsl:text>&#xA;</xsl:text>
+    <xsl:text>Bundle-Name: </xsl:text><xsl:value-of select="$eclipse.plugin.name"/>
+    <xsl:text>&#xA;</xsl:text>
+    <xsl:text>Bundle-SymbolicName: </xsl:text><xsl:value-of select="$eclipse.plugin.id"/>
+    <xsl:text>&#xA;</xsl:text>
+    <xsl:text>Bundle-Vendor: </xsl:text><xsl:value-of select="$eclipse.plugin.provider"/>
+    <xsl:text>&#xA;</xsl:text>
+  </xsl:template>
+
+</xsl:stylesheet>
+ 	  	 
\ Kein Zeilenumbruch am Dateiende.

Eigenschaftsänderungen: eclipse/eclipse3.xsl
___________________________________________________________________
Hinzugefügt: svn:eol-style
   + LF
Hinzugefügt: svn:keywords
   + Author Date Id Revision

Index: VERSION
===================================================================
--- VERSION	(Revision 8504)
+++ VERSION	(Revision 8900)
@@ -26,7 +26,7 @@
   <fm:Branch>XSL Stylesheets</fm:Branch>
   <!-- * set/keep fm:version as N.NN.N-pre except for official releases, -->
   <!-- * then after the release, revert it to N.NN.N-pre & check back in -->
-  <fm:Version>1.76.0-pre</fm:Version>
+  <fm:Version>1.76.0</fm:Version>
 <!--
   <fm:License>MIT/X Consortium License</fm:License>
 -->
@@ -36,8 +36,8 @@
 <!-- * Code cleanup -->
 <!-- * Minor feature enhancements  -->
 <!-- * Major feature enhancements -->
-* Minor bugfixes 
-<!-- * Major bugfixes -->
+<!-- * Minor bugfixes  -->
+* Major bugfixes 
 <!-- * Minor security fixes -->
 <!-- * Major security fixes -->
   </fm:Release-Focus>
@@ -48,7 +48,7 @@
   <fm:Changelog-URL>http://sourceforge.net/project/shownotes.php?release_id={SFRELID}</fm:Changelog-URL>
   <fm:CVS-URL>http://docbook.svn.sourceforge.net/viewvc/docbook/</fm:CVS-URL>
   <fm:Mailing-List-URL>http://lists.oasis-open.org/archives/docbook-apps/</fm:Mailing-List-URL>
-  <fm:Changes>This is a release with bugfixes.</fm:Changes>
+  <fm:Changes>This is a release with bugfixes and some enhancements.</fm:Changes>
 </fm:project>
 
 <xsl:template match="/" priority="-100">
Index: xhtml/html2xhtml.xsl
===================================================================
--- xhtml/html2xhtml.xsl	(Revision 8504)
+++ xhtml/html2xhtml.xsl	(Revision 8900)
@@ -3,7 +3,7 @@
                 xmlns:xslo="http://www.w3.org/1999/XSL/TransformAlias";
                 xmlns:exsl="http://exslt.org/common";
                 xmlns:saxon="http://icl.com/saxon";
-                exclude-result-prefixes="exsl"
+                exclude-result-prefixes="exsl saxon"
                 version="1.0">
 
 <xsl:include href="../lib/lib.xsl"/>
@@ -164,6 +164,13 @@
   </span>
 </xsl:template>
 
+<!-- "The following HTML elements specify font information. 
+      Although they are not all deprecated, their use is discouraged in 
+      favor of style sheets." -->
+<xsl:template match="b|i">
+  <xsl:apply-templates/>
+</xsl:template>  
+
 <!-- this only occurs in docbook.xsl to identify errors -->
 <xsl:template match="a[@name]">
   <xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml";>
Index: xhtml/Makefile
===================================================================
--- xhtml/Makefile	(Revision 8504)
+++ xhtml/Makefile	(Revision 8900)
@@ -4,12 +4,14 @@ all: xsl-files profile-docbook.xsl profi
 
 remove-old:
 	for f in *.xsl; do if [ ! -f ../html/$$f -a "$$f" != "html2xhtml.xsl" ]; then rm $$f; fi; done
+	$(RM) docbook.css.xml
 
 add-new:
 	for f in ../html/*.xsl; do if [ ! -f `basename $$f` ]; then \
           echo "copying $$f"; \
           cp $$f .; \
           touch -t 197001010000 `basename $$f`; fi; done
+	cp ../html/docbook.css.xml .
 
 # Oh, come on! It must be possible to do this in Make, but I can't figure out how (ndw)
 

Eigenschaftsänderungen: xhtml
___________________________________________________________________
Geändert: svn:ignore
   - .cvsignore
admon.xsl
annotations.xsl
autoidx-kimber.xsl
autoidx-kosek.xsl
autoidx-ng.xsl
autoidx.xsl
autotoc.xsl
biblio-iso690.xsl
biblio.xsl
block.xsl
callout.xsl
changebars.xsl
chunk-changebars.xsl
chunk-code.xsl
chunk-common.xsl
chunk.xsl
chunker.xsl
chunkfast.xsl
chunktoc.xsl
component.xsl
db5strip.xsl
division.xsl
docbook.xsl
docbookng.xsl
ebnf.xsl
footnote.xsl
formal.xsl
glossary.xsl
graphics.xsl
highlight.xsl
html-rtf.xsl
html.xsl
htmltbl.xsl
index.xsl
info.xsl
inline.xsl
keywords.xsl
lists.xsl
maketoc.xsl
manifest.xsl
math.xsl
oldchunker.xsl
onechunk.xsl
param.xsl
pi.xsl
profile-chunk-code.xsl
profile-chunk.xsl
profile-docbook.xsl
profile-onechunk.xsl
qandaset.xsl
refentry.xsl
sections.xsl
synop.xsl
table.xsl
task.xsl
titlepage.templates.xsl
titlepage.xsl
toc.xsl
verbatim.xsl
xref.xsl
xslfiles.gen

   + .cvsignore
admon.xsl
annotations.xsl
autoidx-kimber.xsl
autoidx-kosek.xsl
autoidx-ng.xsl
autoidx.xsl
autotoc.xsl
biblio-iso690.xsl
biblio.xsl
block.xsl
callout.xsl
changebars.xsl
chunk-changebars.xsl
chunk-code.xsl
chunk-common.xsl
chunk.xsl
chunker.xsl
chunkfast.xsl
chunktoc.xsl
component.xsl
db5strip.xsl
division.xsl
docbook.xsl
docbook.css.xml
docbookng.xsl
ebnf.xsl
footnote.xsl
formal.xsl
glossary.xsl
graphics.xsl
highlight.xsl
html-rtf.xsl
html.xsl
htmltbl.xsl
index.xsl
info.xsl
inline.xsl
keywords.xsl
lists.xsl
maketoc.xsl
manifest.xsl
math.xsl
oldchunker.xsl
onechunk.xsl
param.xsl
pi.xsl
profile-chunk-code.xsl
profile-chunk.xsl
profile-docbook.xsl
profile-onechunk.xsl
qandaset.xsl
refentry.xsl
sections.xsl
synop.xsl
table.xsl
task.xsl
titlepage.templates.xsl
titlepage.xsl
toc.xsl
verbatim.xsl
xref.xsl
xslfiles.gen


Index: html/chunktoc.xsl
===================================================================
--- html/chunktoc.xsl	(Revision 8504)
+++ html/chunktoc.xsl	(Revision 8900)
@@ -1,7 +1,10 @@
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:doc="http://nwalsh.com/xsl/documentation/1.0";
-		version="1.0"
-                exclude-result-prefixes="doc">
+                xmlns:exsl="http://exslt.org/common";
+                xmlns:ng="http://docbook.org/docbook-ng";
+                xmlns:db="http://docbook.org/ns/docbook";
+                version="1.0"
+                exclude-result-prefixes="doc exsl ng db">
 
 <!-- ********************************************************************
      $Id$
@@ -131,7 +134,7 @@
   <xsl:call-template name="process-chunk"/>
 </xsl:template>
 
-<xsl:template match="book/appendix">
+<xsl:template match="appendix">
   <xsl:call-template name="process-chunk"/>
 </xsl:template>
 
@@ -167,10 +170,6 @@
   <xsl:call-template name="process-chunk"/>
 </xsl:template>
 
-<xsl:template match="article/appendix">
-  <xsl:call-template name="process-chunk"/>
-</xsl:template>
-
 <xsl:template match="article/glossary">
   <xsl:call-template name="process-chunk"/>
 </xsl:template>
Index: html/autotoc.xsl
===================================================================
--- html/autotoc.xsl	(Revision 8504)
+++ html/autotoc.xsl	(Revision 8900)
@@ -36,13 +36,24 @@
 
   <xsl:variable name="toc.title">
     <xsl:if test="$toc.title.p">
-      <p>
-        <b>
-          <xsl:call-template name="gentext">
-            <xsl:with-param name="key">TableofContents</xsl:with-param>
-          </xsl:call-template>
-        </b>
-      </p>
+      <xsl:choose>
+        <xsl:when test="$make.clean.html != 0">
+          <div class="toc-title">
+            <xsl:call-template name="gentext">
+              <xsl:with-param name="key">TableofContents</xsl:with-param>
+            </xsl:call-template>
+          </div>
+        </xsl:when>
+        <xsl:otherwise>
+          <p>
+            <b>
+              <xsl:call-template name="gentext">
+                <xsl:with-param name="key">TableofContents</xsl:with-param>
+              </xsl:call-template>
+            </b>
+          </p>
+        </xsl:otherwise>
+      </xsl:choose>
     </xsl:if>
   </xsl:variable>
 
@@ -611,22 +622,42 @@
 
   <xsl:if test="$nodes">
     <div class="list-of-{$titles}s">
-      <p>
-        <b>
-          <xsl:call-template name="gentext">
-            <xsl:with-param name="key">
-              <xsl:choose>
-                <xsl:when test="$titles='table'">ListofTables</xsl:when>
-                <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
-                <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
-                <xsl:when test="$titles='example'">ListofExamples</xsl:when>
-                <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
-                <xsl:otherwise>ListofUnknown</xsl:otherwise>
-              </xsl:choose>
-            </xsl:with-param>
-          </xsl:call-template>
-        </b>
-      </p>
+      <xsl:choose>
+        <xsl:when test="$make.clean.html != 0">
+          <div class="toc-title">
+            <xsl:call-template name="gentext">
+              <xsl:with-param name="key">
+                <xsl:choose>
+                  <xsl:when test="$titles='table'">ListofTables</xsl:when>
+                  <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+                  <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+                  <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+                  <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
+                  <xsl:otherwise>ListofUnknown</xsl:otherwise>
+                </xsl:choose>
+              </xsl:with-param>
+            </xsl:call-template>
+          </div>
+        </xsl:when>
+        <xsl:otherwise>
+          <p>
+            <b>
+              <xsl:call-template name="gentext">
+                <xsl:with-param name="key">
+                  <xsl:choose>
+                    <xsl:when test="$titles='table'">ListofTables</xsl:when>
+                    <xsl:when test="$titles='figure'">ListofFigures</xsl:when>
+                    <xsl:when test="$titles='equation'">ListofEquations</xsl:when>
+                    <xsl:when test="$titles='example'">ListofExamples</xsl:when>
+                    <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when>
+                    <xsl:otherwise>ListofUnknown</xsl:otherwise>
+                  </xsl:choose>
+                </xsl:with-param>
+              </xsl:call-template>
+            </b>
+          </p>
+        </xsl:otherwise>
+      </xsl:choose>
 
       <xsl:element name="{$toc.list.type}">
         <xsl:apply-templates select="$nodes" mode="toc">
Index: html/inline.xsl
===================================================================
--- html/inline.xsl	(Revision 8504)
+++ html/inline.xsl	(Revision 8900)
@@ -18,6 +18,10 @@
      copyright and other information.
 
      ******************************************************************** -->
+
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm)"/>
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm/@baseform)"/>
+
 <xsl:template name="simple.xlink">
   <xsl:param name="node" select="."/>
   <xsl:param name="content">
@@ -145,16 +149,18 @@
               </xsl:if>
 
               <!-- For URIs, use @xlink:show if defined, otherwise use ulink.target -->
-              <xsl:attribute name="target">
-                <xsl:choose>
-                  <xsl:when test="$target.show !=''">
+              <xsl:choose>
+                <xsl:when test="$target.show !=''">
+                  <xsl:attribute name="target">
                     <xsl:value-of select="$target.show"/>
-                  </xsl:when>
-                  <xsl:otherwise>
-                  <xsl:value-of select="$ulink.target"/>
-                  </xsl:otherwise>
-                </xsl:choose>
-              </xsl:attribute>
+                  </xsl:attribute>
+                </xsl:when>
+                <xsl:when test="$ulink.target !=''">
+                  <xsl:attribute name="target">
+                    <xsl:value-of select="$ulink.target"/>
+                  </xsl:attribute>
+                </xsl:when>
+              </xsl:choose>
               
               <xsl:copy-of select="$content"/>
             </a>
@@ -1012,8 +1018,7 @@
         </xsl:choose>
       </xsl:variable>
       <xsl:variable name="targets"
-                    select="//glossentry[normalize-space(glossterm)=$term
-                              or normalize-space(glossterm/@baseform)=$term]"/>
+                    select="key('glossentries', $term)"/>
       <xsl:variable name="target" select="$targets[1]"/>
 
       <xsl:choose>
@@ -1329,7 +1334,7 @@
 
 <xsl:template match="comment[&comment.block.parents;]|remark[&comment.block.parents;]">
   <xsl:if test="$show.comments != 0">
-    <p class="remark"><i><xsl:call-template name="inline.charseq"/></i></p>
+    <p class="remark"><em><xsl:call-template name="inline.charseq"/></em></p>
   </xsl:if>
 </xsl:template>
 
Index: html/formal.xsl
===================================================================
--- html/formal.xsl	(Revision 8504)
+++ html/formal.xsl	(Revision 8900)
@@ -90,11 +90,22 @@
     </xsl:apply-templates>
   </xsl:param>
 
-  <p class="title">
-    <b>
-      <xsl:copy-of select="$title"/>
-    </b>
-  </p>
+
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <xsl:variable name="html.class" select="concat(local-name($object),'-title')"/>
+      <div class="{$html.class}">
+        <xsl:copy-of select="$title"/>
+      </div>
+    </xsl:when>
+    <xsl:otherwise>
+      <p class="title">
+        <b>
+          <xsl:copy-of select="$title"/>
+        </b>
+      </p>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template name="informal.object">
@@ -142,7 +153,7 @@
   <xsl:param name="class" select="local-name(.)"/>
 
   <xsl:choose>
-    <xsl:when test="title">
+    <xsl:when test="title or info/title">
       <xsl:call-template name="formal.object">
         <xsl:with-param name="placement" select="$placement"/>
         <xsl:with-param name="class" select="$class"/>
@@ -244,6 +255,16 @@
   </xsl:if>
 
   <xsl:apply-templates mode="htmlTable"/>
+
+  <xsl:if test=".//footnote|../title//footnote">
+    <tbody class="footnotes">
+      <tr>
+        <td colspan="50">
+          <xsl:apply-templates select=".//footnote|../title//footnote" mode="table.footnote.mode"/>
+        </td>
+      </tr>
+    </tbody>
+  </xsl:if>
 </xsl:template>
 
 <xsl:template match="example">
Index: html/docbook.xsl
===================================================================
--- html/docbook.xsl	(Revision 8504)
+++ html/docbook.xsl	(Revision 8900)
@@ -135,6 +135,13 @@
     <xsl:copy-of select="$title"/>
   </title>
 
+  <xsl:if test="$html.base != ''">
+    <base href="{$html.base}"/>
+  </xsl:if>
+
+  <!-- Insert links to CSS files or insert literal style elements -->
+  <xsl:call-template name="generate.css"/>
+
   <xsl:if test="$html.stylesheet != ''">
     <xsl:call-template name="output.html.stylesheets">
       <xsl:with-param name="stylesheets" select="normalize-space($html.stylesheet)"/>
@@ -146,10 +153,6 @@
           href="{$link.mailto.url}"/>
   </xsl:if>
 
-  <xsl:if test="$html.base != ''">
-    <base href="{$html.base}"/>
-  </xsl:if>
-
   <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
 
   <xsl:if test="$generate.meta.abstract != 0">
@@ -207,25 +210,20 @@ body { background-image: url('</xsl:text
 
   <xsl:choose>
     <xsl:when test="contains($stylesheets, ' ')">
-      <link rel="stylesheet" href="{substring-before($stylesheets, ' ')}">
-        <xsl:if test="$html.stylesheet.type != ''">
-          <xsl:attribute name="type">
-            <xsl:value-of select="$html.stylesheet.type"/>
-          </xsl:attribute>
-        </xsl:if>
-      </link>
+      <xsl:variable name="css.filename" select="substring-before($stylesheets, ' ')"/>
+
+      <xsl:call-template name="make.css.link">
+        <xsl:with-param name="css.filename" select="$css.filename"/>
+      </xsl:call-template>
+
       <xsl:call-template name="output.html.stylesheets">
         <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
       </xsl:call-template>
     </xsl:when>
     <xsl:when test="$stylesheets != ''">
-      <link rel="stylesheet" href="{$stylesheets}">
-        <xsl:if test="$html.stylesheet.type != ''">
-          <xsl:attribute name="type">
-            <xsl:value-of select="$html.stylesheet.type"/>
-          </xsl:attribute>
-        </xsl:if>
-      </link>
+      <xsl:call-template name="make.css.link">
+        <xsl:with-param name="css.filename" select="$stylesheets"/>
+      </xsl:call-template>
     </xsl:when>
   </xsl:choose>
 </xsl:template>
@@ -460,6 +458,9 @@ body { background-image: url('</xsl:text
     </body>
   </html>
   <xsl:value-of select="$html.append"/>
+  
+  <!-- Generate any css files only once, not once per chunk -->
+  <xsl:call-template name="generate.css.files"/>
 </xsl:template>
 
 <xsl:template name="root.messages">
@@ -476,6 +477,4 @@ body { background-image: url('</xsl:text
   <xsl:text>0</xsl:text>
 </xsl:template>
 
-<!-- ==================================================================== -->
-
 </xsl:stylesheet>
Index: html/chunk-code.xsl
===================================================================
--- html/chunk-code.xsl	(Revision 8504)
+++ html/chunk-code.xsl	(Revision 8900)
@@ -253,6 +253,12 @@
           </xsl:apply-templates>
         </xsl:when>
         <xsl:otherwise>
+          <xsl:if test="/set">
+            <!-- in a set, make sure we inherit the right book info... -->
+            <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*">
+              <xsl:with-param name="recursive" select="true()"/>
+            </xsl:apply-templates>
+          </xsl:if>
         </xsl:otherwise>
       </xsl:choose>
 
@@ -504,6 +510,7 @@
 
 <xsl:template match="*" mode="process.root">
   <xsl:apply-templates select="."/>
+  <xsl:call-template name="generate.css"/>
 </xsl:template>
 
 <!-- ====================================================================== -->
Index: html/param.ent
===================================================================
--- html/param.ent	(Revision 8504)
+++ html/param.ent	(Revision 8900)
@@ -311,3 +311,8 @@
 <!ENTITY javahelp.encoding SYSTEM "../params/javahelp.encoding.xml">
 <!ENTITY writing.mode SYSTEM "../params/writing.mode.xml">
 <!ENTITY exsl.node.set.available SYSTEM "../params/exsl.node.set.available.xml">
+<!ENTITY docbook.css.source SYSTEM "../params/docbook.css.source.xml">
+<!ENTITY docbook.css.link SYSTEM "../params/docbook.css.link.xml">
+<!ENTITY generate.css.header SYSTEM "../params/generate.css.header.xml">
+<!ENTITY make.clean.html SYSTEM "../params/make.clean.html.xml">
+<!ENTITY custom.css.source SYSTEM "../params/custom.css.source.xml">
Index: html/autoidx-kosek.xsl
===================================================================
--- html/autoidx-kosek.xsl	(Revision 8504)
+++ html/autoidx-kosek.xsl	(Revision 8900)
@@ -1,11 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE xsl:stylesheet [
-
-<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY tertiary  'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = ""]))'>
-
-<!ENTITY scope 'count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))'>
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
 ]>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:i="urn:cz-kosek:functions:index"
Index: html/table.xsl
===================================================================
--- html/table.xsl	(Revision 8504)
+++ html/table.xsl	(Revision 8900)
@@ -466,13 +466,29 @@
       </xsl:attribute>
     </xsl:if>
 
-    <xsl:apply-templates select="row[1]">
-      <xsl:with-param name="spans">
-        <xsl:call-template name="blank.spans">
-          <xsl:with-param name="cols" select="../@cols"/>
-        </xsl:call-template>
-      </xsl:with-param>
-    </xsl:apply-templates>
+    <xsl:choose>
+      <!-- recurse on rows only if @morerows is present -->
+      <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
+        <xsl:apply-templates select="row[1]">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'recurse'"/>
+        </xsl:apply-templates>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select="row">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'loop'" />
+        </xsl:apply-templates>
+      </xsl:otherwise>
+    </xsl:choose>
 
   </xsl:element>
 </xsl:template>
@@ -500,24 +516,41 @@
       </xsl:attribute>
     </xsl:if>
 
-    <xsl:apply-templates select="row[1]">
-      <xsl:with-param name="spans">
-        <xsl:call-template name="blank.spans">
-          <xsl:with-param name="cols" select="../@cols"/>
-        </xsl:call-template>
-      </xsl:with-param>
-    </xsl:apply-templates>
+    <xsl:choose>
+      <xsl:when test="row/entry/@morerows|row/entrytbl/@morerows">
+        <xsl:apply-templates select="row[1]">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'recurse'"/>
+        </xsl:apply-templates>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select="row">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'loop'" />
+        </xsl:apply-templates>
+      </xsl:otherwise>
+    </xsl:choose>
 
   </tbody>
 </xsl:template>
 
 <xsl:template match="row">
   <xsl:param name="spans"/>
+  <xsl:param name="browserows"/>
 
   <xsl:choose>
     <xsl:when test="contains($spans, '0')">
       <xsl:call-template name="normal-row">
         <xsl:with-param name="spans" select="$spans"/>
+        <xsl:with-param name="browserows" select="$browserows"/>
       </xsl:call-template>
     </xsl:when>
     <xsl:otherwise>
@@ -538,19 +571,23 @@
 
       <tr><xsl:comment> This row intentionally left blank </xsl:comment></tr>
 
-      <xsl:apply-templates select="following-sibling::row[1]">
-        <xsl:with-param name="spans">
-          <xsl:call-template name="consume-row">
-            <xsl:with-param name="spans" select="$spans"/>
-          </xsl:call-template>
-        </xsl:with-param>
-      </xsl:apply-templates>
+      <xsl:if test="$browserows = 'recurse'">
+        <xsl:apply-templates select="following-sibling::row[1]">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="consume-row">
+              <xsl:with-param name="spans" select="$spans"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="$browserows"/>
+        </xsl:apply-templates>
+      </xsl:if>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>
 
 <xsl:template name="normal-row">
   <xsl:param name="spans"/>
+  <xsl:param name="browserows"/>
 
   <xsl:variable name="row-height">
     <xsl:if test="processing-instruction('dbhtml')">
@@ -631,16 +668,19 @@
     </xsl:apply-templates>
   </tr>
 
-  <xsl:if test="following-sibling::row">
-    <xsl:variable name="nextspans">
-      <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
-        <xsl:with-param name="spans" select="$spans"/>
+  <xsl:if test="$browserows = 'recurse'">
+    <xsl:if test="following-sibling::row">
+      <xsl:variable name="nextspans">
+        <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
+          <xsl:with-param name="spans" select="$spans"/>
+        </xsl:apply-templates>
+      </xsl:variable>
+  
+      <xsl:apply-templates select="following-sibling::row[1]">
+        <xsl:with-param name="spans" select="$nextspans"/>
+        <xsl:with-param name="browserows" select="$browserows"/>
       </xsl:apply-templates>
-    </xsl:variable>
-
-    <xsl:apply-templates select="following-sibling::row[1]">
-      <xsl:with-param name="spans" select="$nextspans"/>
-    </xsl:apply-templates>
+    </xsl:if>
   </xsl:if>
 </xsl:template>
 
@@ -660,6 +700,12 @@
     <xsl:choose>
       <xsl:when test="ancestor::thead">th</xsl:when>
       <xsl:when test="ancestor::tfoot">th</xsl:when>
+      <xsl:when test="ancestor::tbody and 
+                      (ancestor::table[@rowheader = 'firstcol'] or
+                      ancestor::informaltable[@rowheader = 'firstcol']) and
+                      ancestor-or-self::entry[1][count(preceding-sibling::entry) = 0]">
+        <xsl:text>th</xsl:text>
+      </xsl:when>
       <xsl:otherwise>td</xsl:otherwise>
     </xsl:choose>
   </xsl:variable>
@@ -1073,11 +1119,18 @@
                 <xsl:value-of select="$colspec/@char"/>
               </xsl:attribute>
             </xsl:if>
+            
             <xsl:if test="$colspec/@charoff">
               <xsl:attribute name="charoff">
                 <xsl:value-of select="$colspec/@charoff"/>
               </xsl:attribute>
             </xsl:if>
+
+            <xsl:if test="$colspec/@colname">
+              <xsl:attribute name="class">
+                <xsl:value-of select="$colspec/@colname"/>
+              </xsl:attribute>
+            </xsl:if>
           </col>
         </xsl:when>
         <xsl:otherwise>
Index: html/block.xsl
===================================================================
--- html/block.xsl	(Revision 8504)
+++ html/block.xsl	(Revision 8900)
@@ -127,14 +127,28 @@
     </xsl:if>
   </xsl:variable>
 
-  <b>
-    <xsl:copy-of select="$titleStr"/>
-    <xsl:if test="$lastChar != ''
-                  and not(contains($runinhead.title.end.punct, $lastChar))">
-      <xsl:value-of select="$runinhead.default.title.end.punct"/>
-    </xsl:if>
-    <xsl:text>&#160;</xsl:text>
-  </b>
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <span class="formalpara-title">
+        <xsl:copy-of select="$titleStr"/>
+        <xsl:if test="$lastChar != ''
+                      and not(contains($runinhead.title.end.punct, $lastChar))">
+          <xsl:value-of select="$runinhead.default.title.end.punct"/>
+        </xsl:if>
+        <xsl:text>&#160;</xsl:text>
+      </span>
+    </xsl:when>
+    <xsl:otherwise>
+      <b>
+        <xsl:copy-of select="$titleStr"/>
+        <xsl:if test="$lastChar != ''
+                      and not(contains($runinhead.title.end.punct, $lastChar))">
+          <xsl:value-of select="$runinhead.default.title.end.punct"/>
+        </xsl:if>
+        <xsl:text>&#160;</xsl:text>
+      </b>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template match="formalpara/para">
@@ -180,13 +194,22 @@
 </xsl:template>
 
 <xsl:template match="blockquote/title|blockquote/info/title">
-  <div class="blockquote-title">
-    <p>
-      <b>
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <div class="blockquote-title">
         <xsl:apply-templates/>
-      </b>
-    </p>
-  </div>
+      </div>
+    </xsl:when>
+    <xsl:otherwise>
+      <div class="blockquote-title">
+        <p>
+          <b>
+            <xsl:apply-templates/>
+          </b>
+        </p>
+      </div>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <!-- Use an em dash per Chicago Manual of Style and https://sourceforge.net/tracker/index.php?func=detail&aid=2793878&group_id=21935&atid=373747 -->
@@ -215,13 +238,7 @@
   <div>
     <xsl:call-template name="common.html.attributes"/>
     <xsl:call-template name="anchor"/>
-    <xsl:call-template name="formal.object.heading">
-      <xsl:with-param name="title">
-        <xsl:apply-templates select="." mode="title.markup">
-          <xsl:with-param name="allow-anchors" select="'1'"/>
-        </xsl:apply-templates>
-      </xsl:with-param>
-    </xsl:call-template>
+    <xsl:call-template name="sidebar.titlepage"/>
     <xsl:apply-templates/>
   </div>
 </xsl:template>
@@ -254,7 +271,16 @@
 </xsl:template>
 
 <xsl:template match="msgmain/title">
-  <b><xsl:apply-templates/></b>
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <span class="msgmain-title">
+        <xsl:apply-templates/>
+      </span>
+    </xsl:when>
+    <xsl:otherwise>
+      <b><xsl:apply-templates/></b>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template match="msgsub">
@@ -262,7 +288,16 @@
 </xsl:template>
 
 <xsl:template match="msgsub/title">
-  <b><xsl:apply-templates/></b>
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <span class="msgsub-title">
+        <xsl:apply-templates/>
+      </span>
+    </xsl:when>
+    <xsl:otherwise>
+      <b><xsl:apply-templates/></b>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template match="msgrel">
@@ -270,7 +305,16 @@
 </xsl:template>
 
 <xsl:template match="msgrel/title">
-  <b><xsl:apply-templates/></b>
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <span class="msgrel-title">
+        <xsl:apply-templates/>
+      </span>
+    </xsl:when>
+    <xsl:otherwise>
+      <b><xsl:apply-templates/></b>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template match="msgtext">
@@ -282,39 +326,84 @@
 </xsl:template>
 
 <xsl:template match="msglevel">
-  <p>
-    <b>
-      <xsl:call-template name="gentext.template">
-        <xsl:with-param name="context" select="'msgset'"/>
-        <xsl:with-param name="name" select="'MsgLevel'"/>
-      </xsl:call-template>
-    </b>
-    <xsl:apply-templates/>
-  </p>
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <div class="msglevel">
+        <span class="msglevel-title">
+          <xsl:call-template name="gentext.template">
+            <xsl:with-param name="context" select="'msgset'"/>
+            <xsl:with-param name="name" select="'MsgLevel'"/>
+          </xsl:call-template>
+        </span>
+        <xsl:apply-templates/>
+      </div>
+    </xsl:when>
+    <xsl:otherwise>
+      <p>
+        <b>
+          <xsl:call-template name="gentext.template">
+            <xsl:with-param name="context" select="'msgset'"/>
+            <xsl:with-param name="name" select="'MsgLevel'"/>
+          </xsl:call-template>
+        </b>
+        <xsl:apply-templates/>
+      </p>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template match="msgorig">
-  <p>
-    <b>
-      <xsl:call-template name="gentext.template">
-        <xsl:with-param name="context" select="'msgset'"/>
-        <xsl:with-param name="name" select="'MsgOrig'"/>
-      </xsl:call-template>
-    </b>
-    <xsl:apply-templates/>
-  </p>
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <div class="msgorig">
+        <span class="msgorig-title">
+          <xsl:call-template name="gentext.template">
+            <xsl:with-param name="context" select="'msgset'"/>
+            <xsl:with-param name="name" select="'MsgOrig'"/>
+          </xsl:call-template>
+        </span>
+        <xsl:apply-templates/>
+      </div>
+    </xsl:when>
+    <xsl:otherwise>
+      <p>
+        <b>
+          <xsl:call-template name="gentext.template">
+            <xsl:with-param name="context" select="'msgset'"/>
+            <xsl:with-param name="name" select="'MsgOrig'"/>
+          </xsl:call-template>
+        </b>
+        <xsl:apply-templates/>
+      </p>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template match="msgaud">
-  <p>
-    <b>
-      <xsl:call-template name="gentext.template">
-        <xsl:with-param name="context" select="'msgset'"/>
-        <xsl:with-param name="name" select="'MsgAud'"/>
-      </xsl:call-template>
-    </b>
-    <xsl:apply-templates/>
-  </p>
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <div class="msgaud">
+        <span class="msgaud-title">
+          <xsl:call-template name="gentext.template">
+            <xsl:with-param name="context" select="'msgset'"/>
+            <xsl:with-param name="name" select="'MsgAud'"/>
+          </xsl:call-template>
+        </span>
+        <xsl:apply-templates/>
+      </div>
+    </xsl:when>
+    <xsl:otherwise>
+      <p>
+        <b>
+          <xsl:call-template name="gentext.template">
+            <xsl:with-param name="context" select="'msgset'"/>
+            <xsl:with-param name="name" select="'MsgAud'"/>
+          </xsl:call-template>
+        </b>
+        <xsl:apply-templates/>
+      </p>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template match="msgexplan">
@@ -322,7 +411,22 @@
 </xsl:template>
 
 <xsl:template match="msgexplan/title">
-  <p><b><xsl:apply-templates/></b></p>
+  <xsl:choose>
+    <xsl:when test="$make.clean.html != 0">
+      <div class="msgexplan">
+        <span class="msgexplan-title">
+          <xsl:apply-templates/>
+        </span>
+      </div>
+    </xsl:when>
+    <xsl:otherwise>
+      <p>
+        <b>
+          <xsl:apply-templates/>
+        </b>
+      </p>
+    </xsl:otherwise>
+  </xsl:choose>
 </xsl:template>
 
 <!-- ==================================================================== -->
@@ -420,10 +524,7 @@
 <!-- ==================================================================== -->
 
 <xsl:template match="ackno|acknowledgements[parent::article]">
-  <p>
-    <xsl:call-template name="common.html.attributes"/>
-    <xsl:apply-templates/>
-  </p>
+  <xsl:call-template name="block.object"/>
 </xsl:template>
 
 <!-- ==================================================================== -->
Index: html/docbook.css.xml
===================================================================
--- html/docbook.css.xml	(Revision 0)
+++ html/docbook.css.xml	(Revision 8900)
@@ -0,0 +1,109 @@
+<?xml version="1.0"?>
+<style>
+
+/********************************/
+/* start of styles in block.xsl */
+
+.formalpara-title {
+  font-weight: bold;
+}
+
+div.blockquote-title {
+  font-weight: bold;
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+span.msgmain-title {
+  font-weight: bold;
+}
+
+span.msgsub-title {
+  font-weight: bold;
+}
+
+span.msgrel-title {
+  font-weight: bold;
+}
+
+div.msglevel, div.msgorig, div.msgaud {
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+span.msglevel-title, span.msgorig-title, span.msgaud-title {
+  font-weight: bold;
+}
+
+div.msgexplan {
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+span.msgexplan-title {
+  font-weight: bold;
+}
+
+/* end of styles in block.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in autotoc.xsl */
+
+  font-weight: bold;
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+
+/* end of styles in autotoc.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in formal.xsl */
+
+div.figure-title {
+  font-weight: bold;
+}
+
+div.example-title {
+  font-weight: bold;
+}
+
+div.equation-title {
+  font-weight: bold;
+}
+
+div.table-title {
+  font-weight: bold;
+}
+
+div.sidebar-title {
+  font-weight: bold;
+}
+
+
+/* end of styles in formal.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in verbatim.xsl */
+
+div.programlisting {
+  white-space: pre;
+  font-family: monospace;
+}
+
+div.screen {
+  white-space: pre;
+  font-family: monospace;
+}
+
+div.synopsis {
+  white-space: pre;
+  font-family: monospace;
+}
+
+/* end of styles in verbatim.xsl */
+/********************************/
+</style>
Index: html/component.xsl
===================================================================
--- html/component.xsl	(Revision 8504)
+++ html/component.xsl	(Revision 8900)
@@ -259,7 +259,7 @@
   </div>
 </xsl:template>
 
-<xsl:template match="chapter/title|chapter/chapterinfo/title"
+<xsl:template match="chapter/title|chapter/chapterinfo/title|chapter/info/title"
 	      mode="titlepage.mode" priority="2">
   <xsl:call-template name="component.title">
     <xsl:with-param name="node" select="ancestor::chapter[1]"/>
Index: html/autoidx.xsl
===================================================================
--- html/autoidx.xsl	(Revision 8504)
+++ html/autoidx.xsl	(Revision 8900)
@@ -126,24 +126,51 @@
                                              substring(&primary;, 1, 1)))]"/>
   <div class="index">
     <xsl:if test="$others">
-      <div class="indexdiv">
-        <h3>
-          <xsl:call-template name="gentext">
-            <xsl:with-param name="key" select="'index symbols'"/>
-          </xsl:call-template>
-        </h3>
-        <dl>
-          <xsl:apply-templates select="$others[count(.|key('primary',
-                                       &primary;)[&scope;][1]) = 1]"
-                               mode="index-symbol-div">
-            <xsl:with-param name="position" select="position()"/>                                
-            <xsl:with-param name="scope" select="$scope"/>
-            <xsl:with-param name="role" select="$role"/>
-            <xsl:with-param name="type" select="$type"/>
-            <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
-          </xsl:apply-templates>
-        </dl>
-      </div>
+      <xsl:choose>
+        <xsl:when test="normalize-space($type) != '' and 
+                        $others[@type = $type][count(.|key('primary', &primary;)[&scope;][1]) = 1]">
+          <div class="indexdiv">
+            <h3>
+              <xsl:call-template name="gentext">
+                <xsl:with-param name="key" select="'index symbols'"/>
+              </xsl:call-template>
+            </h3>
+            <dl>
+              <xsl:apply-templates select="$others[count(.|key('primary', &primary;)[&scope;][1]) = 1]"
+                                   mode="index-symbol-div">
+                <xsl:with-param name="position" select="position()"/>                                
+                <xsl:with-param name="scope" select="$scope"/>
+                <xsl:with-param name="role" select="$role"/>
+                <xsl:with-param name="type" select="$type"/>
+                <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+              </xsl:apply-templates>
+            </dl>
+          </div>
+        </xsl:when>
+        <xsl:when test="normalize-space($type) != ''"> 
+          <!-- Output nothing, as there isn't a match for $other using this $type -->
+        </xsl:when>  
+        <xsl:otherwise>
+          <div class="indexdiv">
+            <h3>
+              <xsl:call-template name="gentext">
+                <xsl:with-param name="key" select="'index symbols'"/>
+              </xsl:call-template>
+            </h3>
+            <dl>
+              <xsl:apply-templates select="$others[count(.|key('primary',
+                                          &primary;)[&scope;][1]) = 1]"
+                                  mode="index-symbol-div">
+                <xsl:with-param name="position" select="position()"/>                                
+                <xsl:with-param name="scope" select="$scope"/>
+                <xsl:with-param name="role" select="$role"/>
+                <xsl:with-param name="type" select="$type"/>
+                <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/>
+              </xsl:apply-templates>
+            </dl>
+          </div>
+        </xsl:otherwise>
+      </xsl:choose>
     </xsl:if>
 
     <xsl:apply-templates select="$alphabetical[count(.|key('letter',
Index: html/titlepage.xsl
===================================================================
--- html/titlepage.xsl	(Revision 8504)
+++ html/titlepage.xsl	(Revision 8900)
@@ -62,6 +62,9 @@
 <xsl:attribute-set name="setindex.titlepage.recto.style"/>
 <xsl:attribute-set name="setindex.titlepage.verso.style"/>
 
+<xsl:attribute-set name="sidebar.titlepage.recto.style"/>
+<xsl:attribute-set name="sidebar.titlepage.verso.style"/>
+
 <xsl:attribute-set name="section.titlepage.recto.style"/>
 <xsl:attribute-set name="section.titlepage.verso.style"/>
 
Index: html/autoidx-kimber.xsl
===================================================================
--- html/autoidx-kimber.xsl	(Revision 8504)
+++ html/autoidx-kimber.xsl	(Revision 8900)
@@ -1,15 +1,12 @@
 <?xml version="1.0"?>
 <!DOCTYPE xsl:stylesheet [
-
-<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY tertiary  'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = ""]))'>
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
 
 <!-- Documents using the kimber index method must have a lang attribute -->
 <!-- Only one of these should be present in the entity -->
 <!ENTITY lang 'concat(/*/@lang, /*/@xml:lang)'>
 
-<!ENTITY scope 'count(ancestor::node()|$scope) = count(ancestor::node()) and ($role = @role or $type = @type or (string-length($role) = 0 and string-length($type) = 0))'>
 ]>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService";
Index: html/footnote.xsl
===================================================================
--- html/footnote.xsl	(Revision 8504)
+++ html/footnote.xsl	(Revision 8900)
@@ -24,7 +24,7 @@
   </xsl:variable>
 
   <xsl:choose>
-    <xsl:when test="ancestor::tgroup">
+    <xsl:when test="ancestor::table or ancestor::informaltable">
       <sup>
         <xsl:text>[</xsl:text>
         <a name="{$name}" href="{$href}">
@@ -87,7 +87,7 @@ linkend/id: <xsl:value-of select="@linke
     <xsl:when test="string-length(@label) != 0">
       <xsl:value-of select="@label"/>
     </xsl:when>
-    <xsl:when test="ancestor::tgroup">
+    <xsl:when test="ancestor::table or ancestor::informaltable">
       <xsl:variable name="tfnum">
         <xsl:number level="any" from="table|informaltable" format="1"/>
       </xsl:variable>
@@ -97,14 +97,15 @@ linkend/id: <xsl:value-of select="@linke
           <xsl:value-of select="substring($table.footnote.number.symbols, $tfnum, 1)"/>
         </xsl:when>
         <xsl:otherwise>
-          <xsl:number level="any" from="tgroup"
+          <xsl:number level="any" from="table | informaltable"
                       format="{$table.footnote.number.format}"/>
         </xsl:otherwise>
       </xsl:choose>
     </xsl:when>
     <xsl:otherwise>
       <xsl:variable name="pfoot" select="preceding::footnote[not(@label)]"/>
-      <xsl:variable name="ptfoot" select="preceding::tgroup//footnote"/>
+      <xsl:variable name="ptfoot" select="preceding::table//footnote |
+                                          preceding::informaltable//footnote"/>
       <xsl:variable name="fnum" select="count($pfoot) - count($ptfoot) + 1"/>
 
       <xsl:choose>
@@ -136,24 +137,26 @@ linkend/id: <xsl:value-of select="@linke
       <xsl:with-param name="object" select="ancestor::footnote"/>
     </xsl:call-template>
   </xsl:variable>
-  <p>
-    <xsl:call-template name="locale.html.attributes"/>
-    <xsl:if test="@role and $para.propagates.style != 0">
-      <xsl:apply-templates select="." mode="class.attribute">
-        <xsl:with-param name="class" select="@role"/>
-      </xsl:apply-templates>
-    </xsl:if>
-    <sup>
-      <xsl:text>[</xsl:text>
-      <a name="{$name}" href="{$href}">
-        <xsl:apply-templates select="." mode="class.attribute"/>
-        <xsl:apply-templates select="ancestor::footnote"
-                             mode="footnote.number"/>
-      </a>
-      <xsl:text>] </xsl:text>
-    </sup>
-    <xsl:apply-templates/>
-  </p>
+
+  <xsl:call-template name="paragraph">
+    <xsl:with-param name="class">
+      <xsl:if test="@role and $para.propagates.style != 0">
+        <xsl:value-of select="@role"/>
+      </xsl:if>
+    </xsl:with-param>
+    <xsl:with-param name="content">
+      <sup>
+        <xsl:text>[</xsl:text>
+        <a id="{$name}" href="{$href}">
+          <xsl:apply-templates select="." mode="class.attribute"/>
+          <xsl:apply-templates select="ancestor::footnote" mode="footnote.number"/>
+        </a>
+        <xsl:text>] </xsl:text>
+      </sup>
+      <xsl:apply-templates/>
+    </xsl:with-param>
+  </xsl:call-template>
+
 </xsl:template>
 
 <!-- ==================================================================== -->
@@ -237,7 +240,7 @@ linkend/id: <xsl:value-of select="@linke
 <xsl:template name="process.footnotes">
   <xsl:variable name="footnotes" select=".//footnote"/>
   <xsl:variable name="table.footnotes"
-                select=".//tgroup//footnote"/>
+                select=".//table//footnote | .//informaltable//footnote"/>
 
   <!-- Only bother to do this if there's at least one non-table footnote -->
   <xsl:if test="count($footnotes)>count($table.footnotes)">
@@ -299,7 +302,7 @@ linkend/id: <xsl:value-of select="@linke
   </xsl:choose>
 </xsl:template>
 
-<xsl:template match="tgroup//footnote"
+<xsl:template match="table//footnote | informaltable//footnote"
               mode="process.footnote.mode">
 </xsl:template>
 
Index: html/chunk-common.xsl
===================================================================
--- html/chunk-common.xsl	(Revision 8504)
+++ html/chunk-common.xsl	(Revision 8900)
@@ -557,7 +557,7 @@
             <xsl:with-param name="lot">
               <xsl:call-template name="list.of.titles">
                 <xsl:with-param name="titles" select="'equation'"/>
-                <xsl:with-param name="nodes" select=".//equation"/>
+                <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
               </xsl:call-template>
             </xsl:with-param>
           </xsl:call-template>
@@ -565,7 +565,7 @@
         <xsl:otherwise>
           <xsl:call-template name="list.of.titles">
             <xsl:with-param name="titles" select="'equation'"/>
-            <xsl:with-param name="nodes" select=".//equation"/>
+            <xsl:with-param name="nodes" select=".//equation[title or info/title]"/>
           </xsl:call-template>
         </xsl:otherwise>
       </xsl:choose>
Index: html/lists.xsl
===================================================================
--- html/lists.xsl	(Revision 8504)
+++ html/lists.xsl	(Revision 8900)
@@ -426,24 +426,24 @@
       <xsl:call-template name="anchor"/>
       <xsl:choose>
         <xsl:when test="$presentation = 'bold'">
-          <b>
+          <strong>
             <xsl:apply-templates select="term"/>
             <xsl:value-of select="$separator"/>
-          </b>
+          </strong>
         </xsl:when>
         <xsl:when test="$presentation = 'italic'">
-          <i>
+          <em>
             <xsl:apply-templates select="term"/>
             <xsl:value-of select="$separator"/>
-          </i>
+          </em>
         </xsl:when>
         <xsl:when test="$presentation = 'bold-italic'">
-          <b>
-            <i>
+          <strong>
+            <em>
               <xsl:apply-templates select="term"/>
               <xsl:value-of select="$separator"/>
-            </i>
-          </b>
+            </em>
+          </strong>
         </xsl:when>
         <xsl:otherwise>
           <xsl:apply-templates select="term"/>
Index: html/chunker.xsl
===================================================================
--- html/chunker.xsl	(Revision 8504)
+++ html/chunker.xsl	(Revision 8900)
@@ -5,7 +5,7 @@
                 xmlns:exsl="http://exslt.org/common";
                 xmlns:doc="http://nwalsh.com/xsl/documentation/1.0";
 		version="1.0"
-                exclude-result-prefixes="doc"
+                exclude-result-prefixes="saxon lxslt redirect exsl doc"
                 extension-element-prefixes="saxon redirect lxslt exsl">
 
 <!-- ********************************************************************
Index: html/param.xweb
===================================================================
--- html/param.xweb	(Revision 8504)
+++ html/param.xweb	(Revision 8900)
@@ -133,6 +133,11 @@ $Id$
 &draft.watermark.image;
 &generate.id.attributes;
 &generate.meta.abstract;
+&make.clean.html;
+&docbook.css.source;
+&docbook.css.link;
+&custom.css.source;
+&generate.css.header;
 </reference>
 <reference xml:id="xslt"><title>XSLT Processing</title>
 &rootid;
@@ -433,6 +438,7 @@ around all these parameters.</para>
 
      ******************************************************************** -->
 
+<src:fragref linkend="abstract.notitle.enabled.frag"/>
 <src:fragref linkend="admon.graphics.extension.frag"/>
 <src:fragref linkend="admon.graphics.frag"/>
 <src:fragref linkend="admon.graphics.path.frag"/>
@@ -440,14 +446,14 @@ around all these parameters.</para>
 <src:fragref linkend="admon.textlabel.frag"/>
 <src:fragref linkend="annotate.toc.frag"/>
 <src:fragref linkend="annotation.css.frag"/>
-<src:fragref linkend="annotation.js.frag"/>
-<src:fragref linkend="annotation.graphic.open.frag"/>
 <src:fragref linkend="annotation.graphic.close.frag"/>
+<src:fragref linkend="annotation.graphic.open.frag"/>
+<src:fragref linkend="annotation.js.frag"/>
 <src:fragref linkend="annotation.support.frag"/>
 <src:fragref linkend="appendix.autolabel.frag"/>
 <src:fragref linkend="author.othername.in.middle.frag"/>
-<src:fragref linkend="autotoc.label.separator.frag"/>
 <src:fragref linkend="autotoc.label.in.hyperlink.frag"/>
+<src:fragref linkend="autotoc.label.separator.frag"/>
 <src:fragref linkend="base.dir.frag"/>
 <src:fragref linkend="biblioentry.item.separator.frag"/>
 <src:fragref linkend="bibliography.collection.frag"/>
@@ -470,29 +476,32 @@ around all these parameters.</para>
 <src:fragref linkend="chunk.first.sections.frag"/>
 <src:fragref linkend="chunk.quietly.frag"/>
 <src:fragref linkend="chunk.section.depth.frag"/>
+<src:fragref linkend="chunk.separate.lots.frag"/>
 <src:fragref linkend="chunk.toc.frag"/>
 <src:fragref linkend="chunk.tocs.and.lots.frag"/>
 <src:fragref linkend="chunk.tocs.and.lots.has.title.frag"/>
-<src:fragref linkend="chunk.separate.lots.frag"/>
 <src:fragref linkend="citerefentry.link.frag"/>
 <src:fragref linkend="collect.xref.targets.frag"/>
 <src:fragref linkend="component.label.includes.part.label.frag"/>
 <src:fragref linkend="contrib.inline.enabled.frag"/>
 <src:fragref linkend="css.decoration.frag"/>
 <src:fragref linkend="current.docid.frag"/>
+<src:fragref linkend="custom.css.source.frag"/>
 <src:fragref linkend="default.float.class.frag"/>
 <src:fragref linkend="default.image.width.frag"/>
-<src:fragref linkend="default.table.width.frag"/>
 <src:fragref linkend="default.table.frame.frag"/>
+<src:fragref linkend="default.table.width.frag"/>
+<src:fragref linkend="docbook.css.link.frag"/>
+<src:fragref linkend="docbook.css.source.frag"/>
 <src:fragref linkend="draft.mode.frag"/>
 <src:fragref linkend="draft.watermark.image.frag"/>
-<src:fragref linkend="ebnf.table.bgcolor.frag"/>
-<src:fragref linkend="ebnf.table.border.frag"/>
 <src:fragref linkend="ebnf.assignment.frag"/>
 <src:fragref linkend="ebnf.statement.terminator.frag"/>
+<src:fragref linkend="ebnf.table.bgcolor.frag"/>
+<src:fragref linkend="ebnf.table.border.frag"/>
 <src:fragref linkend="eclipse.autolabel.frag"/>
-<src:fragref linkend="eclipse.plugin.name.frag"/>
 <src:fragref linkend="eclipse.plugin.id.frag"/>
+<src:fragref linkend="eclipse.plugin.name.frag"/>
 <src:fragref linkend="eclipse.plugin.provider.frag"/>
 <src:fragref linkend="editedby.enabled.frag"/>
 <src:fragref linkend="email.delimiters.enabled.frag"/>
@@ -508,12 +517,13 @@ around all these parameters.</para>
 <src:fragref linkend="funcsynopsis.decoration.frag"/>
 <src:fragref linkend="funcsynopsis.style.frag"/>
 <src:fragref linkend="function.parens.frag"/>
+<src:fragref linkend="generate.css.header.frag"/>
 <src:fragref linkend="generate.id.attributes.frag"/>
 <src:fragref linkend="generate.index.frag"/>
 <src:fragref linkend="generate.legalnotice.link.frag"/>
-<src:fragref linkend="generate.revhistory.link.frag"/>
 <src:fragref linkend="generate.manifest.frag"/>
 <src:fragref linkend="generate.meta.abstract.frag"/>
+<src:fragref linkend="generate.revhistory.link.frag"/>
 <src:fragref linkend="generate.section.toc.level.frag"/>
 <src:fragref linkend="generate.toc.frag"/>
 <src:fragref linkend="glossary.collection.frag"/>
@@ -534,8 +544,8 @@ around all these parameters.</para>
 <src:fragref linkend="html.cleanup.frag"/>
 <src:fragref linkend="html.ext.frag"/>
 <src:fragref linkend="html.extra.head.links.frag"/>
-<src:fragref linkend="html.head.legalnotice.link.types.frag"/>
 <src:fragref linkend="html.head.legalnotice.link.multiple.frag"/>
+<src:fragref linkend="html.head.legalnotice.link.types.frag"/>
 <src:fragref linkend="html.longdesc.frag"/>
 <src:fragref linkend="html.longdesc.link.frag"/>
 <src:fragref linkend="html.stylesheet.frag"/>
@@ -589,18 +599,20 @@ around all these parameters.</para>
 <src:fragref linkend="htmlhelp.title.frag"/>
 <src:fragref linkend="htmlhelp.use.hhk.frag"/>
 <src:fragref linkend="htmlhelp.window.geometry.frag"/>
-<src:fragref linkend="img.src.path.frag"/>
 <src:fragref linkend="id.warnings.frag"/>
+<src:fragref linkend="ignore.image.scaling.frag"/>
+<src:fragref linkend="img.src.path.frag"/>
+<src:fragref linkend="index.links.to.section.frag"/>
 <src:fragref linkend="index.method.frag"/>
+<src:fragref linkend="index.number.separator.frag"/>
 <src:fragref linkend="index.on.role.frag"/>
-<src:fragref linkend="index.links.to.section.frag"/>
 <src:fragref linkend="index.on.type.frag"/>
-<src:fragref linkend="index.number.separator.frag"/>
-<src:fragref linkend="index.term.separator.frag"/>
-<src:fragref linkend="index.range.separator.frag"/>
 <src:fragref linkend="index.prefer.titleabbrev.frag"/>
-<src:fragref linkend="ignore.image.scaling.frag"/>
+<src:fragref linkend="index.range.separator.frag"/>
+<src:fragref linkend="index.term.separator.frag"/>
 <src:fragref linkend="inherit.keywords.frag"/>
+<src:fragref linkend="insert.olink.page.number.frag"/>
+<src:fragref linkend="insert.olink.pdf.frag.frag"/>
 <src:fragref linkend="insert.xref.page.number.frag"/>
 <src:fragref linkend="javahelp.encoding.frag"/>
 <src:fragref linkend="keep.relative.image.uris.frag"/>
@@ -614,6 +626,7 @@ around all these parameters.</para>
 <src:fragref linkend="linenumbering.separator.frag"/>
 <src:fragref linkend="linenumbering.width.frag"/>
 <src:fragref linkend="link.mailto.url.frag"/>
+<src:fragref linkend="make.clean.html.frag"/>
 <src:fragref linkend="make.graphic.viewport.frag"/>
 <src:fragref linkend="make.single.year.ranges.frag"/>
 <src:fragref linkend="make.valid.html.frag"/>
@@ -632,18 +645,14 @@ around all these parameters.</para>
 <src:fragref linkend="nominal.table.width.frag"/>
 <src:fragref linkend="olink.base.uri.frag"/>
 <src:fragref linkend="olink.debug.frag"/>
-<src:fragref linkend="olink.properties.frag"/>
-<src:fragref linkend="insert.olink.page.number.frag"/>
-<src:fragref linkend="insert.olink.pdf.frag.frag"/>
-<src:fragref linkend="prefer.internal.olink.frag"/>
-<src:fragref linkend="olink.lang.fallback.sequence.frag"/>
 <src:fragref linkend="olink.doctitle.frag"/>
 <src:fragref linkend="olink.fragid.frag"/>
+<src:fragref linkend="olink.lang.fallback.sequence.frag"/>
 <src:fragref linkend="olink.outline.ext.frag"/>
+<src:fragref linkend="olink.properties.frag"/>
 <src:fragref linkend="olink.pubid.frag"/>
 <src:fragref linkend="olink.resolver.frag"/>
 <src:fragref linkend="olink.sysid.frag"/>
-<src:fragref linkend="abstract.notitle.enabled.frag"/>
 <src:fragref linkend="othercredit.like.author.enabled.frag"/>
 <src:fragref linkend="para.propagates.style.frag"/>
 <src:fragref linkend="part.autolabel.frag"/>
@@ -651,12 +660,13 @@ around all these parameters.</para>
 <src:fragref linkend="pixels.per.inch.frag"/>
 <src:fragref linkend="points.per.em.frag"/>
 <src:fragref linkend="preface.autolabel.frag"/>
+<src:fragref linkend="prefer.internal.olink.frag"/>
 <src:fragref linkend="preferred.mediaobject.role.frag"/>
 <src:fragref linkend="process.empty.source.toc.frag"/>
 <src:fragref linkend="process.source.toc.frag"/>
 <src:fragref linkend="profile.arch.frag"/>
-<src:fragref linkend="profile.audience.frag"/>
 <src:fragref linkend="profile.attribute.frag"/>
+<src:fragref linkend="profile.audience.frag"/>
 <src:fragref linkend="profile.condition.frag"/>
 <src:fragref linkend="profile.conformance.frag"/>
 <src:fragref linkend="profile.lang.frag"/>
@@ -673,16 +683,16 @@ around all these parameters.</para>
 <src:fragref linkend="profile.wordsize.frag"/>
 <src:fragref linkend="punct.honorific.frag"/>
 <src:fragref linkend="qanda.defaultlabel.frag"/>
-<src:fragref linkend="qanda.inherit.numeration.frag"/>
 <src:fragref linkend="qanda.in.toc.frag"/>
+<src:fragref linkend="qanda.inherit.numeration.frag"/>
 <src:fragref linkend="qanda.nested.in.toc.frag"/>
 <src:fragref linkend="qandadiv.autolabel.frag"/>
+<src:fragref linkend="refclass.suppress.frag"/>
 <src:fragref linkend="refentry.generate.name.frag"/>
 <src:fragref linkend="refentry.generate.title.frag"/>
 <src:fragref linkend="refentry.separator.frag"/>
 <src:fragref linkend="refentry.xref.manvolnum.frag"/>
 <src:fragref linkend="reference.autolabel.frag"/>
-<src:fragref linkend="refclass.suppress.frag"/>
 <src:fragref linkend="root.filename.frag"/>
 <src:fragref linkend="rootid.frag"/>
 <src:fragref linkend="runinhead.default.title.end.punct.frag"/>
@@ -712,14 +722,14 @@ around all these parameters.</para>
 <src:fragref linkend="tablecolumns.extension.frag"/>
 <src:fragref linkend="target.database.document.frag"/>
 <src:fragref linkend="targets.filename.frag"/>
-<src:fragref linkend="textdata.default.encoding.frag"/>
 <src:fragref linkend="tex.math.delims.frag"/>
 <src:fragref linkend="tex.math.file.frag"/>
 <src:fragref linkend="tex.math.in.alt.frag"/>
+<src:fragref linkend="textdata.default.encoding.frag"/>
 <src:fragref linkend="textinsert.extension.frag"/>
 <src:fragref linkend="toc.list.type.frag"/>
-<src:fragref linkend="toc.section.depth.frag"/>
 <src:fragref linkend="toc.max.depth.frag"/>
+<src:fragref linkend="toc.section.depth.frag"/>
 <src:fragref linkend="ulink.target.frag"/>
 <src:fragref linkend="use.embed.for.svg.frag"/>
 <src:fragref linkend="use.extensions.frag"/>
@@ -729,13 +739,13 @@ around all these parameters.</para>
 <src:fragref linkend="use.role.for.mediaobject.frag"/>
 <src:fragref linkend="use.svg.frag"/>
 <src:fragref linkend="variablelist.as.table.frag"/>
-<src:fragref linkend="variablelist.term.separator.frag"/>
 <src:fragref linkend="variablelist.term.break.after.frag"/>
+<src:fragref linkend="variablelist.term.separator.frag"/>
 <src:fragref linkend="writing.mode.frag"/>
-<src:fragref linkend="xref.with.number.and.title.frag"/>
-<src:fragref linkend="xref.label-title.separator.frag"/>
 <src:fragref linkend="xref.label-page.separator.frag"/>
+<src:fragref linkend="xref.label-title.separator.frag"/>
 <src:fragref linkend="xref.title-page.separator.frag"/>
+<src:fragref linkend="xref.with.number.and.title.frag"/>
 
 </xsl:stylesheet>
 </src:fragment>
Index: html/html.xsl
===================================================================
--- html/html.xsl	(Revision 8504)
+++ html/html.xsl	(Revision 8900)
@@ -366,5 +366,247 @@
   </xsl:choose>
 </xsl:template>
 
+<!-- ==================================================================== -->
+<!-- Insert link to css or insert literal CSS in head element -->
+<xsl:template name="generate.css">
+  <xsl:choose>
+    <xsl:when test="$generate.css.header = 0">
+      <xsl:call-template name="generate.css.links"/>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:call-template name="generate.css.headers"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template name="generate.css.headers">
+  <xsl:call-template name="generate.default.css.header"/>
+  <xsl:call-template name="generate.custom.css.header"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.header">
+  <xsl:if test="$make.clean.html != 0 and 
+                $docbook.css.source != ''">
+    <!-- Select default file relative to stylesheet -->
+    <xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
+
+    <xsl:call-template name="output.css.header">
+      <xsl:with-param name="css.node" select="$css.node"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.header">
+  <xsl:if test="$custom.css.source != ''">
+    <!-- Select custom file relative to document -->
+    <xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
+
+    <xsl:call-template name="output.css.header">
+      <xsl:with-param name="css.node" select="$css.node"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="output.css.header">
+  <xsl:param name="css.node"/> 
+
+  <xsl:choose>
+    <xsl:when test="count($css.node) = 0">
+    </xsl:when>
+    <xsl:otherwise>
+      <style type="text/css">
+        <xsl:copy-of select="$css.node/text()"/>
+      </style>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+<xsl:template name="generate.css.links">
+  <xsl:call-template name="generate.default.css.link"/>
+  <xsl:call-template name="generate.custom.css.link"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.link">
+  <xsl:if test="$make.clean.html != 0 and 
+                $docbook.css.link != 0 and
+                $docbook.css.source != ''">
+    <xsl:variable name="filename">
+      <xsl:call-template name="css.output.filename">
+        <xsl:with-param name="src" select="$docbook.css.source"/>
+      </xsl:call-template>
+    </xsl:variable>
+
+    <xsl:call-template name="make.css.link">
+      <xsl:with-param name="css.filename" select="$filename"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.link">
+  <xsl:if test="$custom.css.source != ''">
+    <xsl:variable name="filename">
+      <xsl:call-template name="css.output.filename">
+        <xsl:with-param name="src" select="$custom.css.source"/>
+      </xsl:call-template>
+    </xsl:variable>
+
+    <xsl:call-template name="make.css.link">
+      <xsl:with-param name="css.filename" select="$filename"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<!-- a CSS link reference must take into account the relative
+     path to a CSS file when chunked HTML is output to more than one directory -->
+<xsl:template name="make.css.link">
+  <xsl:param name="css.filename" select="''"/>
+
+  <xsl:variable name="href.to.uri" select="$css.filename"/>
+
+  <xsl:variable name="href.from.uri">
+    <xsl:call-template name="href.target.uri">
+      <xsl:with-param name="object" select="."/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="href.to">
+    <xsl:call-template name="trim.common.uri.paths">
+      <xsl:with-param name="uriA" select="$href.to.uri"/>
+      <xsl:with-param name="uriB" select="$href.from.uri"/>
+      <xsl:with-param name="return" select="'A'"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="href.from">
+    <xsl:call-template name="trim.common.uri.paths">
+      <xsl:with-param name="uriA" select="$href.to.uri"/>
+      <xsl:with-param name="uriB" select="$href.from.uri"/>
+      <xsl:with-param name="return" select="'B'"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:variable name="depth">
+    <xsl:call-template name="count.uri.path.depth">
+      <xsl:with-param name="filename" select="$href.from"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:variable name="href">
+    <xsl:call-template name="copy-string">
+      <xsl:with-param name="string" select="'../'"/>
+      <xsl:with-param name="count" select="$depth"/>
+    </xsl:call-template>
+    <xsl:value-of select="$href.to"/>
+  </xsl:variable>
+
+  <xsl:if test="string-length($css.filename) != 0">
+    <link rel="stylesheet" 
+          type="text/css"
+          href="{$href}"/>
+  </xsl:if>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="generate.css.files">
+  <xsl:call-template name="generate.default.css.file"/>
+  <xsl:call-template name="generate.custom.css.file"/>
+</xsl:template>
+
+<xsl:template name="generate.default.css.file">
+  <xsl:if test="$make.clean.html != 0 and 
+                $generate.css.header = 0 and
+                $docbook.css.source != ''">
+    <!-- Select default file relative to stylesheet -->
+    <xsl:variable name="css.node" select="document($docbook.css.source)/*[1]"/>
+
+    <xsl:call-template name="generate.css.file">
+      <xsl:with-param name="src" select="$docbook.css.source"/>
+      <xsl:with-param name="css.node" select="$css.node"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.custom.css.file">
+  <xsl:if test="$custom.css.source != '' and
+                $generate.css.header = 0">
+    <!-- Select custom file relative to document -->
+    <xsl:variable name="css.node" select="document($custom.css.source,.)/*[1]"/>
+
+    <xsl:call-template name="generate.css.file">
+      <xsl:with-param name="src" select="$custom.css.source"/>
+      <xsl:with-param name="css.node" select="$css.node"/>
+    </xsl:call-template>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="generate.css.file">
+  <xsl:param name="css.node"/> 
+  <xsl:param name="src" select="''"/> 
+
+  <xsl:variable name="css.text" select="$css.node/text()"/>
+
+  <xsl:choose>
+    <xsl:when test="count($css.node) = 0">
+      <xsl:message>
+        <xsl:text>ERROR: no root element for CSS source file'</xsl:text>
+        <xsl:value-of select="$src"/>
+        <xsl:text>'.</xsl:text>
+      </xsl:message>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:variable name="filename">
+        <xsl:call-template name="css.output.pathname">
+          <xsl:with-param name="src" select="$src"/>
+          <xsl:with-param name="content" select="$css.node"/>
+        </xsl:call-template>
+      </xsl:variable>
+
+      <xsl:call-template name="write.text.chunk">
+        <xsl:with-param name="filename" select="$filename"/>
+        <xsl:with-param name="content" select="$css.text"/>
+      </xsl:call-template>
+
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template name="css.output.filename">
+  <xsl:param name="content"/>
+  <xsl:param name="src" select="''"/>
+  
+  <xsl:variable name="candidate">
+    <xsl:choose>
+      <xsl:when test="string-length($src) = 0">
+        <xsl:message>
+          <xsl:text>ERROR: missing CSS input filename.</xsl:text>
+        </xsl:message>
+      </xsl:when>
+      <xsl:when test="substring($src,string-length($src)-3) = '.xml'">
+        <xsl:value-of select="substring($src, 1, string-length($src) - 4)"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$src"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+  <xsl:value-of select="$candidate"/>
+</xsl:template>
+
+<xsl:template name="css.output.pathname">
+  <xsl:param name="content"/>
+  <xsl:param name="src" select="''"/>
+
+  <xsl:variable name="file">
+    <xsl:call-template name="css.output.filename">
+      <xsl:with-param name="content" select="$content"/>
+      <xsl:with-param name="src" select="$src"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="path" select="concat($base.dir, $file)"/>
+  <xsl:value-of select="$path"/>
+  
+</xsl:template>
+
 </xsl:stylesheet>
 
Index: html/titlepage.templates.xml
===================================================================
--- html/titlepage.templates.xml	(Revision 8504)
+++ html/titlepage.templates.xml	(Revision 8900)
@@ -1,5 +1,5 @@
 <t:templates xmlns:t="http://nwalsh.com/docbook/xsl/template/1.0";
-	     xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param";
+             xmlns:param="http://nwalsh.com/docbook/xsl/template/1.0/param";
              xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
 
 <!-- ==================================================================== -->
@@ -106,9 +106,9 @@
 <t:titlepage t:element="part" t:wrapper="div" class="titlepage">
   <t:titlepage-content t:side="recto">
     <title
-	   t:force="1"
-	   t:named-template="division.title"
-	   param:node="ancestor-or-self::part[1]"/>
+           t:force="1"
+           t:named-template="division.title"
+           param:node="ancestor-or-self::part[1]"/>
     <subtitle/>
     <corpauthor/>
     <authorgroup/>
@@ -205,8 +205,8 @@
   <t:titlepage-content t:side="recto">
 <!-- uncomment this if you want refentry titlepages
     <title t:force="1"
-	   t:named-template="refentry.title"
-	   param:node="ancestor-or-self::refentry[1]"/>
+           t:named-template="refentry.title"
+           param:node="ancestor-or-self::refentry[1]"/>
 -->
   </t:titlepage-content>
 
@@ -227,9 +227,9 @@
   <t:titlepage t:element="dedication" t:wrapper="div" class="titlepage">
     <t:titlepage-content t:side="recto">
     <title
-	   t:force="1"
-	   t:named-template="component.title"
-	   param:node="ancestor-or-self::dedication[1]"/>
+           t:force="1"
+           t:named-template="component.title"
+           param:node="ancestor-or-self::dedication[1]"/>
     <subtitle/>
     </t:titlepage-content>
 
@@ -251,9 +251,9 @@
 <t:titlepage t:element="acknowledgements" t:wrapper="div" class="titlepage">
     <t:titlepage-content t:side="recto">
     <title
-	   t:force="1"
-	   t:named-template="component.title"
-	   param:node="ancestor-or-self::acknowledgements[1]"/>
+           t:force="1"
+           t:named-template="component.title"
+           param:node="ancestor-or-self::acknowledgements[1]"/>
     <subtitle/>
     </t:titlepage-content>
 
@@ -590,9 +590,9 @@
 <t:titlepage t:element="bibliography" t:wrapper="div" class="titlepage">
   <t:titlepage-content t:side="recto">
     <title
-	   t:force="1"
-	   t:named-template="component.title"
-	   param:node="ancestor-or-self::bibliography[1]"/>
+           t:force="1"
+           t:named-template="component.title"
+           param:node="ancestor-or-self::bibliography[1]"/>
     <subtitle/>
   </t:titlepage-content>
 
@@ -614,9 +614,9 @@
 <t:titlepage t:element="glossary" t:wrapper="div" class="titlepage">
   <t:titlepage-content t:side="recto">
     <title
-	   t:force="1"
-	   t:named-template="component.title"
-	   param:node="ancestor-or-self::glossary[1]"/>
+           t:force="1"
+           t:named-template="component.title"
+           param:node="ancestor-or-self::glossary[1]"/>
     <subtitle/>
   </t:titlepage-content>
 
@@ -638,9 +638,9 @@
 <t:titlepage t:element="index" t:wrapper="div" class="titlepage">
   <t:titlepage-content t:side="recto">
     <title
-	   t:force="1"
-	   t:named-template="component.title"
-	   param:node="ancestor-or-self::index[1]"/>
+           t:force="1"
+           t:named-template="component.title"
+           param:node="ancestor-or-self::index[1]"/>
     <subtitle/>
   </t:titlepage-content>
 
@@ -662,9 +662,31 @@
 <t:titlepage t:element="setindex" t:wrapper="div" class="titlepage">
   <t:titlepage-content t:side="recto">
     <title
-	   t:force="1"
-	   t:named-template="component.title"
-	   param:node="ancestor-or-self::setindex[1]"/>
+           t:force="1"
+           t:named-template="component.title"
+           param:node="ancestor-or-self::setindex[1]"/>
+    <subtitle/>
+  </t:titlepage-content>
+
+  <t:titlepage-content t:side="verso">
+  </t:titlepage-content>
+
+  <t:titlepage-separator>
+  </t:titlepage-separator>
+
+  <t:titlepage-before t:side="recto">
+  </t:titlepage-before>
+
+  <t:titlepage-before t:side="verso">
+  </t:titlepage-before>
+</t:titlepage>
+
+<!-- ==================================================================== -->
+<t:titlepage t:element="sidebar" t:wrapper="div" class="titlepage">
+  <t:titlepage-content t:side="recto">
+    <title
+           t:named-template="formal.object.heading"
+           param:object="ancestor-or-self::sidebar[1]"/>
     <subtitle/>
   </t:titlepage-content>
 
Index: html/verbatim.xsl
===================================================================
--- html/verbatim.xsl	(Revision 8504)
+++ html/verbatim.xsl	(Revision 8900)
@@ -34,6 +34,13 @@
 
   <xsl:call-template name="anchor"/>
 
+  <xsl:variable name="div.element">
+    <xsl:choose>
+      <xsl:when test="$make.clean.html != 0">div</xsl:when>
+      <xsl:otherwise>pre</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
   <xsl:if test="$shade.verbatim != 0">
     <xsl:message>
       <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text>
@@ -61,7 +68,7 @@
           </xsl:otherwise>
         </xsl:choose>
       </xsl:variable>
-      <pre>
+      <xsl:element name="{$div.element}">
         <xsl:apply-templates select="." mode="common.html.attributes"/>
         <xsl:if test="@width != ''">
           <xsl:attribute name="width">
@@ -71,10 +78,10 @@
         <xsl:call-template name="number.rtf.lines">
           <xsl:with-param name="rtf" select="$rtf"/>
         </xsl:call-template>
-      </pre>
+      </xsl:element>
     </xsl:when>
     <xsl:otherwise>
-      <pre>
+      <xsl:element name="{$div.element}">
         <xsl:apply-templates select="." mode="common.html.attributes"/>
         <xsl:if test="@width != ''">
           <xsl:attribute name="width">
@@ -89,7 +96,7 @@
             <xsl:apply-templates/>
           </xsl:otherwise>
         </xsl:choose>
-      </pre>
+      </xsl:element>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>
Index: fo/inline.xsl
===================================================================
--- fo/inline.xsl	(Revision 8504)
+++ fo/inline.xsl	(Revision 8900)
@@ -19,6 +19,9 @@
 
      ******************************************************************** -->
 
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm)"/>
+<xsl:key name="glossentries" match="glossentry" use="normalize-space(glossterm/@baseform)"/>
+
 <xsl:template name="simple.xlink">
   <xsl:param name="node" select="."/>
   <xsl:param name="content">
@@ -179,6 +182,7 @@
   </xsl:param>
 
   <fo:inline xsl:use-attribute-sets="monospace.properties">
+    <xsl:call-template name="anchor"/>
     <xsl:if test="@dir">
       <xsl:attribute name="direction">
         <xsl:choose>
@@ -841,9 +845,7 @@
       </xsl:variable>
 
       <xsl:variable name="targets"
-                    select="//glossentry[normalize-space(glossterm)=$term
-                            or normalize-space(glossterm/@baseform)=$term]"/>
-
+                    select="key('glossentries', $term)"/>
       <xsl:variable name="target" select="$targets[1]"/>
 
       <xsl:choose>
Index: fo/formal.xsl
===================================================================
--- fo/formal.xsl	(Revision 8504)
+++ fo/formal.xsl	(Revision 8900)
@@ -163,7 +163,7 @@
               <xsl:attribute name="keep-together.within-column"><xsl:value-of
                               select="$keep.together"/></xsl:attribute>
             </xsl:if>
-            <xsl:apply-templates/>
+            <xsl:call-template name="equation.without.title"/>
           </fo:block>
         </xsl:when>
         <xsl:otherwise>
@@ -173,7 +173,7 @@
               <xsl:attribute name="keep-together.within-column"><xsl:value-of
                               select="$keep.together"/></xsl:attribute>
             </xsl:if>
-            <xsl:apply-templates/>
+            <xsl:call-template name="equation.without.title"/>
           </fo:block>
         </xsl:otherwise>
       </xsl:choose>
@@ -276,10 +276,34 @@
   </xsl:choose>
 </xsl:template>
 
+<xsl:template name="equation.without.title">
+  <!-- Lay out equation and number next to equation using a table -->
+  <fo:table table-layout="fixed" width="100%">
+    <fo:table-column column-width="proportional-column-width(15)"/>
+    <fo:table-column column-width="proportional-column-width(1)"/>
+    <fo:table-body start-indent="0pt" end-indent="0pt">
+      <fo:table-row>
+        <fo:table-cell padding-end="6pt">
+          <fo:block>
+            <xsl:apply-templates/>
+          </fo:block>
+        </fo:table-cell>
+        <fo:table-cell xsl:use-attribute-sets="equation.number.properties">
+          <fo:block>
+            <xsl:text>(</xsl:text>
+            <xsl:apply-templates select="." mode="label.markup"/>
+            <xsl:text>)</xsl:text>
+          </fo:block>
+        </fo:table-cell>
+      </fo:table-row>
+    </fo:table-body>
+  </fo:table>
+</xsl:template>
+
 <xsl:template name="semiformal.object">
   <xsl:param name="placement" select="'before'"/>
   <xsl:choose>
-    <xsl:when test="./title">
+    <xsl:when test="title or info/title">
       <xsl:call-template name="formal.object">
         <xsl:with-param name="placement" select="$placement"/>
       </xsl:call-template>
Index: fo/param.ent
===================================================================
--- fo/param.ent	(Revision 8504)
+++ fo/param.ent	(Revision 8900)
@@ -265,6 +265,7 @@
 <!ENTITY figure.properties SYSTEM "../params/figure.properties.xml">
 <!ENTITY example.properties SYSTEM "../params/example.properties.xml">
 <!ENTITY equation.properties SYSTEM "../params/equation.properties.xml">
+<!ENTITY equation.number.properties SYSTEM "../params/equation.number.properties.xml">
 <!ENTITY table.properties SYSTEM "../params/table.properties.xml">
 <!ENTITY informalfigure.properties SYSTEM "../params/informalfigure.properties.xml">
 <!ENTITY informalexample.properties SYSTEM "../params/informalexample.properties.xml">
Index: fo/autoidx-kosek.xsl
===================================================================
--- fo/autoidx-kosek.xsl	(Revision 8504)
+++ fo/autoidx-kosek.xsl	(Revision 8900)
@@ -1,17 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE xsl:stylesheet [
-
-<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY tertiary  'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = ""]))'>
-
-<!ENTITY sep '" "'>
-<!-- Documents using the kimber index method must have a lang attribute -->
-<!-- Only one of these should be present in the entity -->
-
-<!ENTITY scope 'count(ancestor::node()|$scope) = count(ancestor::node())
-                and ($role = @role or $type = @type or
-                (string-length($role) = 0 and string-length($type) = 0))'>
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
 ]>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:fo="http://www.w3.org/1999/XSL/Format";
Index: fo/table.xsl
===================================================================
--- fo/table.xsl	(Revision 8504)
+++ fo/table.xsl	(Revision 8900)
@@ -667,13 +667,29 @@
   <xsl:variable name="tgroup" select="parent::*"/>
 
   <fo:table-header start-indent="0pt" end-indent="0pt">
-    <xsl:apply-templates select="row[1]">
-      <xsl:with-param name="spans">
-        <xsl:call-template name="blank.spans">
-          <xsl:with-param name="cols" select="../@cols"/>
-        </xsl:call-template>
-      </xsl:with-param>
-    </xsl:apply-templates>
+    <xsl:choose>
+      <!-- Use recursion if @morerows is used -->
+      <xsl:when test="row/entry/@morerows|ro/entrytbl/@morerows">
+        <xsl:apply-templates select="row[1]">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'recurse'"/>
+        </xsl:apply-templates>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select="row">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'loop'" />
+        </xsl:apply-templates>
+      </xsl:otherwise>
+    </xsl:choose>
   </fo:table-header>
 </xsl:template>
 
@@ -681,14 +697,29 @@
   <xsl:variable name="tgroup" select="parent::*"/>
 
   <fo:table-footer start-indent="0pt" end-indent="0pt">
-    <xsl:apply-templates select="row[1]">
-      <xsl:with-param name="spans">
-        <xsl:call-template name="blank.spans">
-          <xsl:with-param name="cols" select="../@cols"/>
-        </xsl:call-template>
-      </xsl:with-param>
-    </xsl:apply-templates>
-
+    <xsl:choose>
+      <!-- Use recursion if @morerows is used -->
+      <xsl:when test="row/entry/@morerows|ro/entrytbl/@morerows">
+        <xsl:apply-templates select="row[1]">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'recurse'"/>
+        </xsl:apply-templates>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select="row">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'loop'" />
+        </xsl:apply-templates>
+      </xsl:otherwise>
+    </xsl:choose>
   </fo:table-footer>
 </xsl:template>
 
@@ -696,23 +727,41 @@
   <xsl:variable name="tgroup" select="parent::*"/>
 
   <fo:table-body start-indent="0pt" end-indent="0pt">
-    <xsl:apply-templates select="row[1]">
-      <xsl:with-param name="spans">
-        <xsl:call-template name="blank.spans">
-          <xsl:with-param name="cols" select="../@cols"/>
-        </xsl:call-template>
-      </xsl:with-param>
-    </xsl:apply-templates>
+    <xsl:choose>
+      <!-- Use recursion if @morerows is used -->
+      <xsl:when test="row/entry/@morerows|ro/entrytbl/@morerows">
+        <xsl:apply-templates select="row[1]">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'recurse'"/>
+        </xsl:apply-templates>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select="row">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="blank.spans">
+              <xsl:with-param name="cols" select="../@cols"/>
+            </xsl:call-template>
+          </xsl:with-param>
+          <xsl:with-param name="browserows" select="'loop'" />
+        </xsl:apply-templates>
+      </xsl:otherwise>
+    </xsl:choose>
   </fo:table-body>
 </xsl:template>
 
 <xsl:template match="row">
   <xsl:param name="spans"/>
+  <xsl:param name="browserows"/>
 
   <xsl:choose>
     <xsl:when test="contains($spans, '0')">
       <xsl:call-template name="normal-row">
         <xsl:with-param name="spans" select="$spans"/>
+        <xsl:with-param name="browserows" select="$browserows"/>
       </xsl:call-template>
     </xsl:when>
     <xsl:otherwise>
@@ -736,19 +785,22 @@
         <fo:table-cell><fo:block/></fo:table-cell>
       </fo:table-row>
 
-      <xsl:apply-templates select="following-sibling::row[1]">
-        <xsl:with-param name="spans">
-          <xsl:call-template name="consume-row">
-            <xsl:with-param name="spans" select="$spans"/>
-          </xsl:call-template>
-        </xsl:with-param>
-      </xsl:apply-templates>
+      <xsl:if test="$browserows = 'recurse'">
+        <xsl:apply-templates select="following-sibling::row[1]">
+          <xsl:with-param name="spans">
+            <xsl:call-template name="consume-row">
+              <xsl:with-param name="spans" select="$spans"/>
+            </xsl:call-template>
+          </xsl:with-param>
+        </xsl:apply-templates>
+      </xsl:if>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>
 
 <xsl:template name="normal-row">
   <xsl:param name="spans"/>
+  <xsl:param name="browserows"/>
 
   <fo:table-row>
     <xsl:call-template name="table.row.properties"/>
@@ -759,16 +811,19 @@
     </xsl:apply-templates>
   </fo:table-row>
 
-  <xsl:if test="following-sibling::row">
-    <xsl:variable name="nextspans">
-      <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
-        <xsl:with-param name="spans" select="$spans"/>
+  <xsl:if test="$browserows = 'recurse'">
+    <xsl:if test="following-sibling::row">
+      <xsl:variable name="nextspans">
+        <xsl:apply-templates select="(entry|entrytbl)[1]" mode="span">
+          <xsl:with-param name="spans" select="$spans"/>
+        </xsl:apply-templates>
+      </xsl:variable>
+  
+      <xsl:apply-templates select="following-sibling::row[1]">
+        <xsl:with-param name="spans" select="$nextspans"/>
+        <xsl:with-param name="browserows" select="$browserows"/>
       </xsl:apply-templates>
-    </xsl:variable>
-
-    <xsl:apply-templates select="following-sibling::row[1]">
-      <xsl:with-param name="spans" select="$nextspans"/>
-    </xsl:apply-templates>
+    </xsl:if>
   </xsl:if>
 </xsl:template>
 
@@ -1215,9 +1270,18 @@
 <!-- Expand this template to add properties to any cell's block -->
 <xsl:template name="table.cell.block.properties">
   <!-- highlight this entry? -->
-  <xsl:if test="ancestor::thead or ancestor::tfoot">
-    <xsl:attribute name="font-weight">bold</xsl:attribute>
-  </xsl:if>
+  <xsl:choose>
+    <xsl:when test="ancestor::thead or ancestor::tfoot">
+      <xsl:attribute name="font-weight">bold</xsl:attribute>
+    </xsl:when>
+    <!-- Make row headers bold too -->
+    <xsl:when test="ancestor::tbody and 
+                    (ancestor::table[@rowheader = 'firstcol'] or
+                    ancestor::informaltable[@rowheader = 'firstcol']) and
+                    ancestor-or-self::entry[1][count(preceding-sibling::entry) = 0]">
+      <xsl:attribute name="font-weight">bold</xsl:attribute>
+    </xsl:when>
+  </xsl:choose>
 </xsl:template>
 
 <xsl:template match="entry|entrytbl" name="sentry" mode="span">
@@ -1408,11 +1472,9 @@
         <xsl:variable name="colwidth">
           <xsl:call-template name="calc.column.width"/>
         </xsl:variable>
-        <xsl:if test="$colwidth != 'proportional-column-width(1)'">
           <xsl:attribute name="column-width">
             <xsl:value-of select="$colwidth"/>
           </xsl:attribute>
-        </xsl:if>
       </fo:table-column>
     </xsl:when>
     <xsl:otherwise>
@@ -1448,11 +1510,9 @@
                 </xsl:with-param>
               </xsl:call-template>
             </xsl:variable>
-            <xsl:if test="$colwidth != 'proportional-column-width(1)'">
               <xsl:attribute name="column-width">
                 <xsl:value-of select="$colwidth"/>
               </xsl:attribute>
-            </xsl:if>
           </fo:table-column>
         </xsl:when>
         <xsl:otherwise>
Index: fo/block.xsl
===================================================================
--- fo/block.xsl	(Revision 8504)
+++ fo/block.xsl	(Revision 8900)
@@ -543,9 +543,16 @@
       <fo:table-row>
         <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties">
           <fo:block xsl:use-attribute-sets="revhistory.title.properties">
-            <xsl:call-template name="gentext">
-              <xsl:with-param name="key" select="'RevHistory'"/>
-            </xsl:call-template>
+            <xsl:choose>
+              <xsl:when test="title|info/title">
+                <xsl:apply-templates select="title|info/title" mode="titlepage.mode"/>
+              </xsl:when>
+              <xsl:otherwise>
+                <xsl:call-template name="gentext">
+                  <xsl:with-param name="key" select="'RevHistory'"/>
+                </xsl:call-template>
+              </xsl:otherwise>
+            </xsl:choose>
           </fo:block>
         </fo:table-cell>
       </fo:table-row>
@@ -554,6 +561,10 @@
   </fo:table>
 </xsl:template>
 
+<xsl:template match="revhistory/title">
+  <!-- Handled in titlepage.mode -->
+</xsl:template>
+
 <xsl:template match="revhistory/revision">
   <xsl:variable name="revnumber" select="revnumber"/>
   <xsl:variable name="revdate"   select="date"/>
Index: fo/refentry.xsl
===================================================================
--- fo/refentry.xsl	(Revision 8504)
+++ fo/refentry.xsl	(Revision 8900)
@@ -268,6 +268,7 @@
 </xsl:template>
 
 <xsl:template match="refmeta">
+  <xsl:apply-templates select=".//indexterm"/>
 </xsl:template>
 
 <xsl:template match="manvolnum">
Index: fo/graphics.xsl
===================================================================
--- fo/graphics.xsl	(Revision 8504)
+++ fo/graphics.xsl	(Revision 8900)
@@ -480,7 +480,13 @@
     <xsl:when test="mml:*" xmlns:mml="http://www.w3.org/1998/Math/MathML";>
       <xsl:apply-templates/>
     </xsl:when>
-  
+
+    <xsl:when test="svg:*" xmlns:svg="http://www.w3.org/2000/svg";>
+      <fo:instream-foreign-object>
+        <xsl:apply-templates mode="copy-all" select="*"/>
+      </fo:instream-foreign-object>
+    </xsl:when>
+
     <xsl:when test="@format='linespecific'">
       <xsl:choose>
         <xsl:when test="$use.extensions != '0'
Index: fo/index.xsl
===================================================================
--- fo/index.xsl	(Revision 8504)
+++ fo/index.xsl	(Revision 8900)
@@ -1,8 +1,7 @@
 <?xml version='1.0'?>
 <!DOCTYPE xsl:stylesheet [
-<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas)]))'>
-<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas)]))'>
-<!ENTITY tertiary  'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas)]))'>
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
 ]>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:fo="http://www.w3.org/1999/XSL/Format";
Index: fo/titlepage.xsl
===================================================================
--- fo/titlepage.xsl	(Revision 8504)
+++ fo/titlepage.xsl	(Revision 8900)
@@ -234,15 +234,22 @@
 <xsl:template match="author" mode="titlepage.mode">
   <fo:block>
     <xsl:call-template name="anchor"/>
-    <xsl:call-template name="person.name"/>
-    <xsl:if test="affiliation/orgname">
-      <xsl:text>, </xsl:text>
-      <xsl:apply-templates select="affiliation/orgname" mode="titlepage.mode"/>
-    </xsl:if>
-    <xsl:if test="email|affiliation/address/email">
-      <xsl:text> </xsl:text>
-      <xsl:apply-templates select="(email|affiliation/address/email)[1]"/>
-    </xsl:if>
+    <xsl:choose>
+      <xsl:when test="orgname">
+        <xsl:apply-templates/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="person.name"/>
+        <xsl:if test="affiliation/orgname">
+          <xsl:text>, </xsl:text>
+          <xsl:apply-templates select="affiliation/orgname" mode="titlepage.mode"/>
+        </xsl:if>
+        <xsl:if test="email|affiliation/address/email">
+          <xsl:text> </xsl:text>
+          <xsl:apply-templates select="(email|affiliation/address/email)[1]"/>
+        </xsl:if>
+      </xsl:otherwise>
+    </xsl:choose>
   </fo:block>
 </xsl:template>
 
Index: fo/autoidx-kimber.xsl
===================================================================
--- fo/autoidx-kimber.xsl	(Revision 8504)
+++ fo/autoidx-kimber.xsl	(Revision 8900)
@@ -1,18 +1,12 @@
 <?xml version="1.0"?>
 <!DOCTYPE xsl:stylesheet [
+<!ENTITY % common.entities SYSTEM "../common/entities.ent">
+%common.entities;
 
-<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY tertiary  'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = ""]))'>
-
-<!ENTITY sep '" "'>
 <!-- Documents using the kimber index method must have a lang attribute -->
 <!-- Only one of these should be present in the entity -->
 <!ENTITY lang 'concat(/*/@lang, /*/@xml:lang)'>
 
-<!ENTITY scope 'count(ancestor::node()|$scope) = count(ancestor::node())
-                and ($role = @role or $type = @type or
-                (string-length($role) = 0 and string-length($type) = 0))'>
 ]>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:fo="http://www.w3.org/1999/XSL/Format";
Index: fo/pagesetup.xsl
===================================================================
--- fo/pagesetup.xsl	(Revision 8504)
+++ fo/pagesetup.xsl	(Revision 8900)
@@ -2445,6 +2445,7 @@
     <xsl:when test="$element = 'toc' and self::book">i</xsl:when>
     <xsl:when test="$element = 'preface'">i</xsl:when>
     <xsl:when test="$element = 'dedication'">i</xsl:when>
+    <xsl:when test="$element = 'acknowledgements'">i</xsl:when>
     <xsl:otherwise>1</xsl:otherwise>
   </xsl:choose>
 </xsl:template>
@@ -2463,6 +2464,7 @@
                               self::bookinfo or
                               self::info or
                               self::dedication or
+                              self::acknowledgements or
                               self::preface or
                               self::toc or
                               self::lot)][1]"/>
Index: fo/lists.xsl
===================================================================
--- fo/lists.xsl	(Revision 8504)
+++ fo/lists.xsl	(Revision 8900)
@@ -1194,7 +1194,7 @@
 
 <xsl:template match="segmentedlist" mode="seglist-table">
   <xsl:apply-templates select="title" mode="list.title.mode" />
-  <fo:table>
+  <fo:table table-layout="fixed">
     <fo:table-column column-number="1" column-width="proportional-column-width(1)"/>
     <fo:table-column column-number="2" column-width="proportional-column-width(1)"/>
     <fo:table-header start-indent="0pt" end-indent="0pt">
Index: fo/param.xweb
===================================================================
--- fo/param.xweb	(Revision 8504)
+++ fo/param.xweb	(Revision 8900)
@@ -451,6 +451,7 @@ zero by default, so this is simply the p
 &figure.properties;
 &example.properties;
 &equation.properties;
+&equation.number.properties;
 &table.properties;
 &informalfigure.properties;
 &informalexample.properties;
@@ -621,6 +622,7 @@ around all these parameters.</para>
 <src:fragref linkend="email.delimiters.enabled.frag"/>
 <src:fragref linkend="email.mailto.enabled.frag"/>
 <src:fragref linkend="equation.properties.frag"/>
+<src:fragref linkend="equation.number.properties.frag"/>
 <src:fragref linkend="example.properties.frag"/>
 <src:fragref linkend="exsl.node.set.available.frag"/>
 <src:fragref linkend="figure.properties.frag"/>
Index: fo/glossary.xsl
===================================================================
--- fo/glossary.xsl	(Revision 8504)
+++ fo/glossary.xsl	(Revision 8900)
@@ -583,12 +583,18 @@
 
   &setup-language-variable;
 
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
   <xsl:variable name="preamble"
                 select="*[not(self::title
                             or self::subtitle
                             or self::glossentry)]"/>
 
-  <xsl:call-template name="glossdiv.titlepage"/>
+  <fo:block id="{$id}">
+    <xsl:call-template name="glossdiv.titlepage"/>
+  </fo:block>
 
   <xsl:apply-templates select="$preamble"/>
 
@@ -626,12 +632,18 @@
 
   &setup-language-variable;
 
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
   <xsl:variable name="preamble"
                 select="*[not(self::title
                             or self::subtitle
                             or self::glossentry)]"/>
 
-  <xsl:call-template name="glossdiv.titlepage"/>
+  <fo:block id="{$id}">
+    <xsl:call-template name="glossdiv.titlepage"/>
+  </fo:block>
 
   <xsl:apply-templates select="$preamble"/>
 
@@ -669,6 +681,10 @@
 
   &setup-language-variable;
 
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
   <xsl:variable name="entries" select="glossentry"/>
 
   <xsl:variable name="preamble"
@@ -676,7 +692,9 @@
                             or self::subtitle
                             or self::glossentry)]"/>
 
-  <xsl:call-template name="glossdiv.titlepage"/>
+  <fo:block id="{$id}">
+    <xsl:call-template name="glossdiv.titlepage"/>
+  </fo:block>
 
   <xsl:apply-templates select="$preamble"/>
 
@@ -913,13 +931,20 @@ GlossEntry ::=
 
 <xsl:template match="glossdiv" mode="glossary.as.blocks">
   &setup-language-variable;
+
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
   <xsl:variable name="entries" select="glossentry"/>
   <xsl:variable name="preamble"
                 select="*[not(self::title
                             or self::subtitle
                             or self::glossentry)]"/>
 
-  <xsl:call-template name="glossdiv.titlepage"/>
+  <fo:block id="{$id}">
+    <xsl:call-template name="glossdiv.titlepage"/>
+  </fo:block>
 
   <xsl:apply-templates select="$preamble"/>
 
Index: fo/xref.xsl
===================================================================
--- fo/xref.xsl	(Revision 8504)
+++ fo/xref.xsl	(Revision 8900)
@@ -791,6 +791,15 @@
       </xsl:apply-templates>
     </xsl:when>
     <xsl:otherwise>
+      <xsl:if test="$verbose != 0">
+        <xsl:message>
+          <xsl:text>WARNING: xref to &lt;</xsl:text>
+          <xsl:value-of select="local-name()"/>
+          <xsl:text> id="</xsl:text>
+          <xsl:value-of select="@id|@xml:id"/>
+          <xsl:text>"&gt; has no generated text. Trying its ancestor elements.</xsl:text>
+        </xsl:message>
+      </xsl:if>
       <xsl:apply-templates select="$context" mode="xref-to">
         <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
         <xsl:with-param name="referrer" select="$referrer"/>
@@ -912,7 +921,7 @@
   <fo:basic-link xsl:use-attribute-sets="xref.properties"
                  external-destination="{$ulink.url}">
     <xsl:choose>
-      <xsl:when test="count(child::node())=0">
+      <xsl:when test="count(child::node())=0 or (string(.) = $url)">
         <xsl:call-template name="hyphenate-url">
           <xsl:with-param name="url" select="$url"/>
         </xsl:call-template>
@@ -1062,8 +1071,6 @@
   <!-- olink content may be passed in from xlink olink -->
   <xsl:param name="content" select="NOTANELEMENT"/>
 
-  <xsl:call-template name="anchor"/>
-
   <xsl:variable name="localinfo" select="@localinfo"/>
 
   <xsl:choose>
@@ -1193,6 +1200,7 @@
         <xsl:when test="$linkend != ''">
           <fo:basic-link internal-destination="{$linkend}"
                        xsl:use-attribute-sets="xref.properties">
+            <xsl:call-template name="anchor"/>
             <xsl:copy-of select="$hottext"/>
             <xsl:copy-of select="$olink.page.citation"/>
           </fo:basic-link>
@@ -1202,6 +1210,7 @@
             <xsl:when test="$xep.extensions != 0">
               <fo:basic-link external-destination="url({$href})"
                              xsl:use-attribute-sets="olink.properties">
+                <xsl:call-template name="anchor"/>
                 <xsl:copy-of select="$hottext"/>
               </fo:basic-link>
               <xsl:copy-of select="$olink.page.citation"/>
Index: RELEASE-NOTES.xml
===================================================================
--- RELEASE-NOTES.xml	(Revision 8504)
+++ RELEASE-NOTES.xml	(Revision 8900)
@@ -57,6 +57,906 @@ public APIs (user-configurable parameter
 <sect1 condition="snapshot" xml:id="current">
   <xi:include href="NEWS.xml" xpointer="xpointer(/article/sect1/*)"/>
 </sect1>
+  <sect1 xml:id="V1.76.0">
+    <title>Release Notes: 1.76.0</title>
+<para>This release includes important bug fixes and adds the following
+significant feature changes:</para>
+<variablelist>
+<varlistentry>
+<term>Gentext</term>
+<listitem><para>Many updates and additions to translation/locales thanks to Red Hat, the Fedora Project, and other contributors.</para></listitem>
+</varlistentry>
+<varlistentry>
+<term>Common</term>
+<listitem><para>Faster localization support, as language files are loaded on demand.</para></listitem>
+
+</varlistentry>
+            <varlistentry>
+            <term>FO</term>
+            <listitem><para>Support for SVG content in <tag>imagedata</tag> added.</para></listitem>
+</varlistentry>
+            <varlistentry>
+            <term>HTML</term>
+            <listitem><para>Output improved when using '<parameter>make.clean.html</parameter>' and a stock CSS file is now provided.</para></listitem> 
+</varlistentry>
+<varlistentry>
+<term>EPUB</term>
+<listitem><para>A number of improvements to NCX, cover and image selection, and XHTML 1.1 element choices</para></listitem>
+</varlistentry>
+
+</variablelist>
+
+    <para>The following is a list of changes that have been made since the 1.75.2 release.</para>
+    <sect2 xml:id="rnV1.76.0_Gentext">
+      <title>Gentext</title>
+      <para>The following changes have been made to the <filename>gentext</filename> code since the 1.75.2 release.</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <literal>rlandmann: locale/fa.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Update to Persian translation from the Fedora Project</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>rlandmann: locale/nds.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Locale for Low German</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: locale/ka.xml; Makefile</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added support for Georgian based on patch #2917147.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>rlandmann: locale/nl.xml; locale/ja.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Updated translations from Red Hat and the Fedora Project</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>rlandmann: locale/bs.xml; locale/ru.xml; locale/hr.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Updated locales from Red Hat and the Fedora Project</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>rlandmann: locale/pt.xml; locale/cs.xml; locale/es.xml; locale/bg.xml; locale/nl.xml; loca⋯</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Updated translations from Red Hat and the Fedora Project</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>rlandmann: locale/as.xml; locale/bn_IN.xml; locale/ast.xml; locale/ml.xml; locale/te.xml; ⋯</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">New translations from Red Hat and the Fedora Project</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>rlandmann: locale/pt.xml; locale/ca.xml; locale/da.xml; locale/sr.xml; locale/ru.xml; loca⋯</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Updated translations from Red Hat and the Fedora Project</phrase>
+          </screen>
+        </listitem>
+      </itemizedlist>
+    </sect2>
+    <!--end of Gentext changes for 1.76.0-->
+    <sect2 xml:id="rnV1.76.0_Common">
+      <title>Common</title>
+      <para>The following changes have been made to the <filename>common</filename> code since the 1.75.2 release.</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: common.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fixed bug in output-orderedlist-starting-number template (@startingnumber did not work for FO).</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: gentext.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added fix to catch ID also of descendants of <tag>listitem</tag>. Closes bug #2955077.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Jirka Kosek: l10n.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Stripped down, faster version of gentext.template is used when there is no localization customization.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: stripns.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added fix that preserves <tag>link</tag>/@role (makes links in the <tag>reference</tag> documentation
+with @role="tcg" work).</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: l10n.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fixed bugs related to manpages and L10n.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Jirka Kosek: entities.ent; autoidx-kosek.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Jirka Kosek: l10n.xsl; l10n.dtd; l10n.xml; autoidx-kosek.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Refactored localization support. Language files are loaded on demand. Speedup is about 30%.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Jirka Kosek: l10n.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added xsl:keys for improved performance of localization texts look up. Performance gain around 15%.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: titles.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fixed bug #2912677 (error with <tag>xref</tag> in <tag>title</tag>).</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: olink.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug in xrefstyle "<tag>title</tag>" handling introduced with 
+the 'insert.targetdb.data' template.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: gentext.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug in <tag>xref</tag> to <tag>equation</tag> without <tag>title</tag> to use context="xref-number" instead
+of "xref-number-and-title".</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: labels.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Number all equations in one sequence, with or without <tag>title</tag>.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: entities.ent</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug #2896909 where duplicate @sortas on indexterms caused 
+some indexterms to drop out of <tag>index</tag>.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: stripns.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Expand the "Stripping namespace ..." message to advise users to
+use the namespaced stylesheets.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: stripns.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">need a local version of $exsl.node.set.available variable because
+this module imported many places.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: olink.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added /node() to the select expression that is used to compute the <tag>title</tag> text
+so that no &lt;ttl&gt; elements end up in the output. Closes bug #2830119.</phrase>
+          </screen>
+        </listitem>
+      </itemizedlist>
+    </sect2>
+    <!--end of Common changes for 1.76.0-->
+    <sect2 xml:id="rnV1.76.0_FO">
+      <title>FO</title>
+      <para>The following changes have been made to the
+            <filename>fo</filename> code
+            since the 1.75.2 release.</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: table.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug 2979166 able - Attribute @rowheader not working</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: inline.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Improved <tag>glossterm</tag> auto-linking by using keys. The old code was inefficient when processing documents
+with many inline glossterms.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: titlepage.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug 2805530 <tag>author</tag>/<tag>orgname</tag> not appearing on <tag>title</tag> page.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: graphics.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added support for SVG content in <tag>imagedata</tag> (inspired by patch #2909154).</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: table.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Removed superfluous test used when computing column-width. Closes bug #3000898.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: inline.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added missing &lt;xsl:call-template name="<tag>anchor</tag>"/&gt;. Closes bug #2998567.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: lists.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added table-layout="fixed" on <tag>segmentedlist</tag> <tag>table</tag> (required by XSL spec when  proportional-column-width() is used).</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Jirka Kosek: autoidx-kosek.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Jirka Kosek: index.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: xref.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug in <tag>olink</tag> template when an <tag>olink</tag> has an id.
+Add warning message with id value when trying to <tag>link</tag>
+to an element that has no generated text.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: refentry.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fixed bug #2930968 (<tag>indexterm</tag> in <tag>refmeta</tag> not handled correctly).</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: block.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">fix bug 2949567 <tag>title</tag> in <tag>revhistory</tag> breaks FO transform.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: glossary.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Output id attributes on <tag>glossdiv</tag> blocks so they can be added to
+xrefs or <tag>TOC</tag>.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Jirka Kosek: xref.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Enabled hyphenation of URLs when ulink content is the same as <tag>link</tag> target</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: table.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Apply patch to turn off <tag>row</tag> recursion if no @morerows attributes present.
+This will enable very large tables without <tag>row</tag> spanning to 
+process without running into recursion limits.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: formal.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Format <tag>equation</tag> without <tag>title</tag> using <tag>table</tag> layout with <tag>equation</tag> number
+next to the <tag>equation</tag>.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: param.xweb; param.ent</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Add <parameter>equation.number.properties</parameter>.</phrase>
+          </screen>
+        </listitem>
+      </itemizedlist>
+    </sect2>
+    <!--end of FO changes for 1.76.0-->
+    <sect2 xml:id="rnV1.76.0_HTML">
+      <title>HTML</title>
+      <para>The following changes have been made to the
+            <filename>html</filename> code
+            since the 1.75.2 release.</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: block.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Modified <tag>acknowledgements</tag> template to avoid invalid output (&lt;p&gt; in &lt;p&gt;).</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: titlepage.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added default <tag>sidebar</tag> attribute-sets.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: table.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug 2979166 able - Attribute @rowheader not working</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: footnote.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug 3033191 footnotes in html tables.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: inline.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Improved <tag>glossterm</tag> auto-linking by using keys. The old code was inefficient when processing documents
+with many inline glossterms.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: docbook.css.xml; verbatim.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug 2844927 Validity error for <tag>callout</tag> bugs.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: formal.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Convert formal.object.heading to respect <parameter>make.clean.html</parameter> param.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: titlepage.templates.xml; block.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug 2840768 <tag>sidebar</tag> without <tag>title</tag> inserts empty b <tag>tag</tag>.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: docbook.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Moved the template that outputs &lt;base&gt; so that the base URI also applies to relative CSS paths that come later.
+See patch #2896121.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Jirka Kosek: autoidx-kosek.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: chunk-code.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">fix bug 2948363 generated <tag>filename</tag> for <tag>refentry</tag> not unique, when
+used in a set.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: component.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix missing "<tag>Chapter</tag> n" <tag>label</tag> when use <tag>chapter</tag>/<tag>info</tag>/<tag>title</tag>.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: table.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message"><tag>Row</tag> recursion turned off if no @morerows attributes in the <tag>table</tag>.
+This will prevent failure on long <tag>table</tag> (with no @morerows) due
+to excessive depth of recursion.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: autotoc.xsl; docbook.css.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Support <parameter>make.clean.html</parameter> in autotoc.xsl.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: docbook.css.xml; block.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Add support for <parameter>make.clean.html</parameter> setting in block elements.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: docbook.css.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Stock CSS styles for DocBook HTML output when '<parameter>make.clean.html</parameter>' is non-zero.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: html.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Add templates for generating CSS files and links to them.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: param.xweb</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bugs in new entity references.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: chunk-common.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">List of Equations now includes on equations with titles.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: table.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">If a <tag>colspec</tag> has a colname attribute, add it to the HTML <tag>col</tag>
+element as a class attribute so it can be styled.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: formal.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug 2825842 where <tag>table</tag> footnotes not appearing in HTML-coded <tag>table</tag>.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: chunktoc.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug #2834826 where <tag>appendix</tag> inside part was not chunked as it should be.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: chunktoc.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added missing namespace declarations. Closes bug #2890069.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: footnote.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Updated the template for <tag>footnote</tag> paras to use the 'paragraph' template. Closes bug #2803739.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: inline.xsl; lists.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Remove &lt;b&gt; and &lt;i&gt; elements "discouraged in favor of style sheets" from
+XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
+
+Fixes bug #2873153: No &lt;b&gt; and &lt;i&gt; tags in XHTML/EPUB
+
+Added regression to EPUB specs:</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: inline.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fixed bug #2844916 (don't output @target if <parameter>ulink.target</parameter> is empty).</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: autoidx.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix a bug when using <parameter>index.on.type</parameter>: an '<tag>index</tag> symbols' <tag>section</tag> was created 
+even if that typed <tag>index</tag> didn't include any symbols (they were in the other types).</phrase>
+          </screen>
+        </listitem>
+      </itemizedlist>
+    </sect2>
+    <!--end of HTML changes for 1.76.0-->
+    <sect2 xml:id="rnV1.76.0_Manpages">
+      <title>Manpages</title>
+      <para>The following changes have been made to the
+            <filename>manpages</filename> code
+            since the 1.75.2 release.</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: other.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Modified the write.stubs template so that the <tag>section</tag> directory name is not output twice. Should fix bug #2831602.
+Also ensured that $lang is added to the .so path (when <parameter>man.output.lang.in.name.enabled</parameter>=1).</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: docbook.xsl; other.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fixed bug #2412738 (apostrophe escaping) by applying the submitted patch.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Norman Walsh: block.xsl; endnotes.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug where <tag>simpara</tag> in <tag>footnote</tag> didn't work. Patch by Jonathan Nieder, jrnieder@gmail.com</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>dleidert: lists.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix two indentation issues: In the first case there is no corresponding .RS
+macro (Debian #519438, sf.net 2793873). In the second case an .RS instead of
+the probably intended .sp leads to an indentation bug (Debian #527309,
+sf.net #2642139).</phrase>
+          </screen>
+        </listitem>
+      </itemizedlist>
+    </sect2>
+    <!--end of Manpages changes for 1.76.0-->
+    <sect2 xml:id="rnV1.76.0_Epub">
+      <title>Epub</title>
+      <para>The following changes have been made to the
+            <filename>epub</filename> code
+            since the 1.75.2 release.</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: bin/spec/examples/AMasqueOfDays.epub; docbook.xsl; bin/spec/epub_spec.rb</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Resolve some actual regressions in <tag>date</tag> output spotted by more recent versions of epubcheck</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: docbook.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Updated <tag>mediaobject</tag> selection code that better uses roles (when available); based on contributons by  Glenn McDonald</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Ensure that NCX documents are always outputted with a default namespace
+to prevent problems with the kindlegen machinery</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/partintro.xml; docbook.x⋯</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Adding support for partintros with sect2s, 3s, etc</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: docbook.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Adding param to workaround horrific ADE bug with the inability to process &lt;br&gt;</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: docbook.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Add support for <tag>authorgroup</tag>/<tag>author</tag> in OPF metadata (via Michael Wiedmann)</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Remove &lt;b&gt; and &lt;i&gt; elements "discouraged in favor of style sheets" from
+XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
+
+Fixes bug #2873153: No &lt;b&gt; and &lt;i&gt; tags in XHTML/EPUB
+
+Added regression to EPUB specs:</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: bin/lib/docbook.rb; bin/spec/files/DejaVuSerif-Italic.otf; docbook.xsl; bi⋯</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">This resolves bug #2873142, Please add support for multiple embedded fonts
+
+
+If you navigate to a checkout of DocBook-XSL and go to:
+xsl/epub/bin/spec/files
+You can now run the following <tag>command</tag>:
+
+../../dbtoepub -f DejaVuSerif.otf -f DejaVuSerif-Italic.otf -c test.css
+-s test_cust.xsl orm.book.001.xml
+
+In dbtoepub, the following option can be used more than once:
+-f, --font [OTF FILE] Embed OTF FILE in .epub.
+
+The underlying stylesheet now accepts a comma-separated list of font file
+names rather than just one as the RENAMED epub.embedded.fonts ('s' added).
+
+The runnable EPUB spec now includes:
+- should be valid .epub after including more than one embedded font</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: docbook.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Improve the selection of <tag>cover</tag> images when working in DocBook 4.x land (work in progress)</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Improve the quality of the OPF spine regression by ensuring that the spine
+elements for deeply nested refentries are in order and adjacent to their
+opening wrapper XHTML chunk.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/orm.book.00⋯</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Add more careful handling of refentries to ensure that they always appear in the opf:spine.
+This was only a problem when refentries were pushed deep into the hierarchy (like inside
+a <tag>sect2</tag>), but presented navigational problems for many reading systems (despite the
+correct NCX references). This may *not* be the best solution, but attacking a better
+chunking strategy for refentries was too big a nut to crack at this time.</phrase>
+          </screen>
+        </listitem>
+      </itemizedlist>
+    </sect2>
+    <!--end of Epub changes for 1.76.0-->
+    <sect2 xml:id="rnV1.76.0_Eclipse">
+      <title>Eclipse</title>
+      <para>The following changes have been made to the
+            <filename>eclipse</filename> code
+            since the 1.75.2 release.</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: eclipse3.xsl</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added a stylesheet module that generates plug-ins conforming to the standard (OSGi-based) Eclipse 3.x 
+architecture. The main difference to the older format is that metadata is stored in a separate 
+<parameter>manifest</parameter> file. The module imports and extends the existing eclipse.xsl module. Based on code 
+contributed in patch #2624668.</phrase>
+          </screen>
+        </listitem>
+      </itemizedlist>
+    </sect2>
+    <!--end of Eclipse changes for 1.76.0-->
+    <sect2 xml:id="rnV1.76.0_Params">
+      <title>Params</title>
+      <para>The following changes have been made to the
+            <filename>params</filename> code
+            since the 1.75.2 release.</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: draft.watermark.image.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Fix bug 2922488 <parameter>draft.watermark.image</parameter> pointing to web resource.
+Now the value is images/draft.png, and may require customization
+for local resolution.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Mauritz Jeanson: equation.number.properties.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Corrected <tag>refpurpose</tag>.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Norman Walsh: paper.type.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added USlegal and USlegallandscape paper types.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Jirka Kosek: highlight.xslthl.config.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Added note about specifying location as URL</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: docbook.css.source.xml; generate.css.header.xml; custom.css.source.xml; ma⋯</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Params to support generated CSS files.</phrase>
+          </screen>
+        </listitem>
+        <listitem>
+          <para>
+            <literal>Robert Stayton: equation.number.properties.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">New attribute set for numbers appearing next to equations.</phrase>
+          </screen>
+        </listitem>
+      </itemizedlist>
+    </sect2>
+    <!--end of Params changes for 1.76.0-->
+    <sect2 xml:id="rnV1.76.0_XSL-Xalan">
+      <title>XSL-Xalan</title>
+      <para>The following changes have been made to the
+            <filename>xsl-xalan</filename> code
+            since the 1.75.2 release.</para>
+      <itemizedlist>
+        <listitem>
+          <para>
+            <literal>dleidert: nbproject/genfiles.properties; nbproject/build-impl.xml</literal>
+          </para>
+          <screen>
+            <phrase role="commit-message">Rebuild netbeans build files after adding missing Netbeans configuration to allow easier packaging for Debian.</phrase>
+          </screen>
+        </listitem>
+      </itemizedlist>
+    </sect2>
+    <!--end of XSL-Xalan changes for 1.76.0-->
+  </sect1>
 <sect1 xml:id="rn_V1.75.2">
 <title>Release Notes: 1.75.2</title>
 <para>The following is a list of changes that have been made
Index: Makefile
===================================================================
--- Makefile	(Revision 8504)
+++ Makefile	(Revision 8900)
@@ -63,7 +63,7 @@ DISTRIB_PACKAGES = doc
 URILIST = \
 .\ http://docbook.sourceforge.net/release/xsl/current/
 
-DIRS=common lib html fo manpages htmlhelp javahelp eclipse roundtrip slides website extensions
+DIRS=common lib html fo manpages htmlhelp javahelp eclipse roundtrip slides website extensions webhelp
 
 .PHONY: distrib clean doc docsrc xhtml
 
@@ -90,7 +90,7 @@ xhtml:
 	$(MAKE) -C xhtml
 	$(MAKE) -C xhtml-1_1
 
-docsrc: base 
+docsrc: base docsrc-clean
 	$(MAKE) -C docsrc
 
 doc: docsrc
Index: params/make.clean.html.xml
===================================================================
--- params/make.clean.html.xml	(Revision 0)
+++ params/make.clean.html.xml	(Revision 8900)
@@ -0,0 +1,51 @@
+<refentry xmlns="http://docbook.org/ns/docbook";
+          xmlns:xlink="http://www.w3.org/1999/xlink";
+          xmlns:xi="http://www.w3.org/2001/XInclude";
+          xmlns:src="http://nwalsh.com/xmlns/litprog/fragment";
+          xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+          version="5.0" xml:id="make.clean.html">
+<refmeta>
+<refentrytitle>make.clean.html</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.clean.html</refname>
+<refpurpose>Make HTML conform to modern coding standards</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="make.clean.html.frag">
+<xsl:param name="make.clean.html" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>If <parameter>make.clean.html</parameter> is true, the stylesheets take
+extra effort to ensure that the resulting HTML is conforms to
+modern HTML coding standards.  In addition to eliminating
+excessive and noncompliant coding, it moves presentation
+HTML coding to a CSS stylesheet.</para>
+
+<para>The resulting HTML is dependent on
+CSS for formatting, and so the stylesheet is capable of
+generating a supporting CSS file. The <parameter>docbook.css.source</parameter>
+and <parameter>custom.css.source</parameter> parameters control
+how a CSS file is generated.</para>
+
+<para>If you require your CSS to reside in the HTML 
+<tag>head</tag> element, then the <parameter>generate.css.header</parameter>
+can be used to do that.</para>
+
+<para>The <parameter>make.clean.html</parameter> parameter is
+different from <parameter>html.cleanup</parameter>
+because the former changes the resulting markup; it does not use extension functions
+like the latter to manipulate result-tree-fragments,
+and is therefore applicable to any XSLT processor.</para>
+
+<para>If <parameter>make.clean.html</parameter> is set to zero (the default),
+then the stylesheet retains its original 
+<quote>old style</quote>
+HTML formatting features.</para>
+</refsection>
+</refentry>
Index: params/custom.css.source.xml
===================================================================
--- params/custom.css.source.xml	(Revision 0)
+++ params/custom.css.source.xml	(Revision 8900)
@@ -0,0 +1,119 @@
+<refentry xmlns="http://docbook.org/ns/docbook";
+          xmlns:xlink="http://www.w3.org/1999/xlink";
+          xmlns:xi="http://www.w3.org/2001/XInclude";
+          xmlns:src="http://nwalsh.com/xmlns/litprog/fragment";
+          xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+          version="5.0" xml:id="custom.css.source">
+  <refmeta>
+    <refentrytitle>custom.css.source</refentrytitle>
+    <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+  </refmeta>
+  <refnamediv>
+    <refname>custom.css.source</refname>
+    <refpurpose>Name of a custom CSS input file</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <src:fragment xml:id="custom.css.source.frag"><xsl:param name="custom.css.source"></xsl:param></src:fragment>
+  </refsynopsisdiv>
+
+  <refsection><info><title>Description</title></info>
+
+<para>The <parameter>custom.css.source</parameter>
+parameter enables you to add CSS styles to DocBook's
+HTML output.</para>
+
+<para>The parameter
+specifies the name of a file containing custom
+CSS styles.  The file must be a well-formed XML file that
+consists of a single <tag>style</tag> root
+element that contains CSS styles as its text content.
+For example:</para>
+<programlisting><![CDATA[<?xml version="1.0"?>
+<style>
+h2 {
+  font-weight: bold;
+  color: blue;
+}
+...
+</style>
+]]></programlisting>
+
+<para>The filename specified by the parameter
+should have a <literal>.xml</literal>
+filename suffix, although that is not required.
+The default value of this parameter is blank.</para>
+
+<para>If <parameter>custom.css.source</parameter> is not blank, then
+the stylesheet takes the following actions.
+These actions take place regardless of the value of
+the <parameter>make.clean.html</parameter> parameter.</para>
+
+<orderedlist>
+  <listitem>
+    <para>The stylesheet uses the XSLT <literal>document()</literal>
+    function to open the file specified by the parameter and
+    load it into a variable.</para>
+  </listitem>
+  <listitem>
+    <para>The stylesheet forms an output pathname consisting of the
+    value of the <parameter>base.dir</parameter> parameter (if it is set)
+    and the value of <parameter>custom.css.source</parameter>,
+    with the <literal>.xml</literal> suffix stripped off.
+    </para>
+  </listitem>
+  <listitem>
+    <para>The stylesheet removes the <tag>style</tag>
+    wrapper element and writes just the CSS text content to the output file.</para>
+  </listitem>
+  <listitem>
+    <para>The stylesheet adds a <tag>link</tag> element to the
+    HTML <tag>HEAD</tag> element to reference this external CSS stylesheet.
+    For example:
+    <programlisting>&lt;link rel="stylesheet" href="custom.css" type="text/css"&gt;
+    </programlisting>
+    </para>
+  </listitem>
+</orderedlist>
+
+
+
+<para>If the <parameter>make.clean.html</parameter> parameter is nonzero
+(the default is zero),
+and if the <parameter>docbook.css.source</parameter> parameter
+is not blank (the default is not blank),
+then the stylesheet will also generate a default CSS file
+and add a <tag>link</tag> tag to reference it.
+The <tag>link</tag> to the custom CSS comes after the 
+<tag>link</tag> to the default, so it should cascade properly
+in most browsers.
+If you do not want two <tag>link</tag> tags, and
+instead want your custom CSS to import the default generated
+CSS file, then do the following:
+</para>
+
+<orderedlist>
+  <listitem>
+    <para>Add a line like the following to your custom CSS source file:</para>
+    <programlisting>@import url("docbook.css")
+    </programlisting>
+  </listitem>
+  <listitem>
+    <para>Set the <parameter>docbook.css.link</parameter> parameter 
+    to zero. This will omit the <tag>link</tag> tag
+    that references the default CSS file.</para>
+  </listitem>
+</orderedlist>
+
+<para>If you set <parameter>make.clean.html</parameter> to nonzero but
+you do not want the default CSS generated, then also set
+the <parameter>docbook.css.source</parameter> parameter to blank.
+Then no default CSS will be generated, and so
+all CSS styles must come from your custom CSS file.</para>
+
+<para>You can use the <parameter>generate.css.header</parameter>
+parameter to instead write the CSS to each HTML <tag>HEAD</tag>
+element in a <tag>style</tag> tag instead of an external CSS file.</para>
+
+  </refsection>
+</refentry>
Index: params/generate.css.header.xml
===================================================================
--- params/generate.css.header.xml	(Revision 0)
+++ params/generate.css.header.xml	(Revision 8900)
@@ -0,0 +1,40 @@
+<refentry xmlns="http://docbook.org/ns/docbook";
+          xmlns:xlink="http://www.w3.org/1999/xlink";
+          xmlns:xi="http://www.w3.org/2001/XInclude";
+          xmlns:src="http://nwalsh.com/xmlns/litprog/fragment";
+          xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+          version="5.0" xml:id="generate.css.header">
+<refmeta>
+<refentrytitle>generate.css.header</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>generate.css.header</refname>
+<refpurpose>Insert generated CSS styles in HEAD element</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="generate.css.header.frag">
+<xsl:param name="generate.css.header" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets are capable of generating both default
+and custom CSS stylesheet files.  The parameters 
+<parameter>make.clean.html</parameter>,
+<parameter>docbook.css.source</parameter>, and
+<parameter>custom.css.source</parameter> control that feature.</para>
+
+<para>If you require that CSS styles reside in the HTML 
+<tag>HEAD</tag> element instead of external CSS files,
+then set the <parameter>generate.css.header</parameter>
+parameter to nonzero (it is zero by default).
+Then instead of generating the CSS in external files,
+they are wrapped in <tag>style</tag> elements in
+the <tag>HEAD</tag> element of each HTML output file.
+</para>
+
+</refsection>
+</refentry>
Index: params/highlight.xslthl.config.xml
===================================================================
--- params/highlight.xslthl.config.xml	(Revision 8504)
+++ params/highlight.xslthl.config.xml	(Revision 8900)
@@ -23,5 +23,11 @@
 
 <para>This location has precedence over the corresponding Java property.</para>
 
+<para>Please note that usually you have to specify location as URL not
+just as a simple path on the local
+filesystem. E.g. <filename>file:///home/user/xslthl/my-xslthl-config.xml</filename>.</para>
+
+
+
 </refsection>
 </refentry>
Index: params/paper.type.xml
===================================================================
--- params/paper.type.xml	(Revision 8504)
+++ params/paper.type.xml	(Revision 8900)
@@ -11,6 +11,8 @@
 <refmiscinfo class="other" otherclass="list-type">open</refmiscinfo>
 <refmiscinfo class="other" otherclass="value">USletter<alt>8.5x11in</alt></refmiscinfo>
 <refmiscinfo class="other" otherclass="value">USlandscape<alt>11x8.5in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlegal<alt>8.5inx14in</alt></refmiscinfo>
+<refmiscinfo class="other" otherclass="value">USlegallandscape<alt>14inx8.5in</alt></refmiscinfo>
 <refmiscinfo class="other" otherclass="value">4A0<alt>2378x1682mm</alt></refmiscinfo>
 <refmiscinfo class="other" otherclass="value">2A0<alt>1682x1189mm</alt></refmiscinfo>
 <refmiscinfo class="other" otherclass="value">A0<alt>1189x841mm</alt></refmiscinfo>
Index: params/tex.math.delims.xml
===================================================================
--- params/tex.math.delims.xml	(Revision 8504)
+++ params/tex.math.delims.xml	(Revision 8900)
@@ -25,6 +25,12 @@ surrounded by math mode delimiters?</ref
 <para>For compatibility with DSSSL based DBTeXMath from Allin Cottrell
 you should set this parameter to 0.</para>
 
+<warning>
+  <para>This feature is useful for print/PDF output only if you
+  use the obsolete and now unsupported PassiveTeX XSL-FO
+  engine.</para>
+</warning>
+
 </refsection>
 <refsection><info><title>Related Parameters</title></info>
   <para><parameter>tex.math.in.alt</parameter>,
@@ -36,12 +42,6 @@ you should set this parameter to 0.</par
       class="xmlpi">dbtex delims</tag> processing
     instruction to control whether delimiters are output.</para>
 </refsection>
-<refsection><info><title>More information</title></info>
-  <para>For how-to documentation on embedding TeX equations and
-    generating output from them, see
-    <link
-      role="tcg"
-      xlink:href="TexMath.html"
-      >DBTeXMath</link>.</para>
-</refsection>
+
+
 </refentry>
Index: params/equation.number.properties.xml
===================================================================
--- params/equation.number.properties.xml	(Revision 0)
+++ params/equation.number.properties.xml	(Revision 8900)
@@ -0,0 +1,28 @@
+<refentry xmlns="http://docbook.org/ns/docbook";
+          xmlns:xlink="http://www.w3.org/1999/xlink";
+          xmlns:xi="http://www.w3.org/2001/XInclude";
+          xmlns:src="http://nwalsh.com/xmlns/litprog/fragment";
+          xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+          version="5.0" xml:id="equation.number.properties">
+<refmeta>
+<refentrytitle>equation.number.properties</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">attribute set</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>equation.number.properties</refname>
+<refpurpose>Properties that apply to the <tag>fo:table-cell</tag> containing the number
+of an <tag>equation</tag> that does not have a title.</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="equation.number.properties.frag"><xsl:attribute-set name="equation.number.properties">
+  <xsl:attribute name="text-align">end</xsl:attribute>
+  <xsl:attribute name="display-align">center</xsl:attribute>
+</xsl:attribute-set></src:fragment>
+</refsynopsisdiv>
+<refsection><info><title>Description</title></info>
+<para>Properties that apply to the fo:table-cell containing the number
+of an equation when it has no title. The number in an equation with a
+title is formatted along with the title, and this attribute-set does not apply.</para>
+</refsection>
+</refentry>
Index: params/docbook.css.source.xml
===================================================================
--- params/docbook.css.source.xml	(Revision 0)
+++ params/docbook.css.source.xml	(Revision 8900)
@@ -0,0 +1,83 @@
+<refentry xmlns="http://docbook.org/ns/docbook";
+          xmlns:xlink="http://www.w3.org/1999/xlink";
+          xmlns:xi="http://www.w3.org/2001/XInclude";
+          xmlns:src="http://nwalsh.com/xmlns/litprog/fragment";
+          xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+          version="5.0" xml:id="docbook.css.source">
+  <refmeta>
+    <refentrytitle>docbook.css.source</refentrytitle>
+    <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo>
+  </refmeta>
+  <refnamediv>
+    <refname>docbook.css.source</refname>
+    <refpurpose>Name of the default CSS input file</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <src:fragment xml:id="docbook.css.source.frag"><xsl:param name="docbook.css.source">docbook.css.xml</xsl:param></src:fragment>
+  </refsynopsisdiv>
+
+  <refsection><info><title>Description</title></info>
+
+<para>The <parameter>docbook.css.source</parameter> parameter
+specifies the name of the file containing the default DocBook
+CSS styles.  Those styles are necessary when the
+<parameter>make.clean.html</parameter> parameter is nonzero.</para>
+
+<para>The file is a well-formed XML file that
+must consist of a single <tag>style</tag> root
+element that contains CSS styles as its text content.
+The default value of the parameter (and filename)
+is <literal>docbook.css.xml</literal>.
+The stylesheets ship with the default file. You can substitute
+your own and specify its path in this parameter.</para>
+
+<para>If <parameter>docbook.css.source</parameter> is not blank,
+and <parameter>make.clean.html</parameter> is nonzero, then
+the stylesheet takes the following actions:</para>
+
+<orderedlist>
+  <listitem>
+    <para>The stylesheet uses the XSLT <literal>document()</literal>
+    function to open the file specified by the parameter and
+    load it into a variable.</para>
+  </listitem>
+  <listitem>
+    <para>The stylesheet forms an output pathname consisting of the
+    value of the <parameter>base.dir</parameter> parameter (if it is set)
+    and the value of <parameter>docbook.css.source</parameter>,
+    with the <literal>.xml</literal> suffix stripped off.
+    </para>
+  </listitem>
+  <listitem>
+    <para>The stylesheet removes the <tag>style</tag>
+    wrapper element and writes just the CSS text content to the output file.</para>
+  </listitem>
+  <listitem>
+    <para>The stylesheet adds a <tag>link</tag> element to the
+    HTML <tag>HEAD</tag> element to reference the external CSS stylesheet.
+    For example:</para>
+    <programlisting>&lt;link rel="stylesheet" href="docbook.css" type="text/css"&gt;
+    </programlisting>
+    <para>However, if the <parameter>docbook.css.link</parameter>
+    parameter is set to zero, then no <tag>link</tag> is written
+    for the default CSS file.  That is useful if a custom
+    CSS file will import the default CSS stylesheet to ensure
+    proper cascading of styles.</para>
+  </listitem>
+</orderedlist>
+
+<para>If the <parameter>docbook.css.source</parameter> parameter
+is changed from its default <literal>docbook.css.xml</literal> to blank,
+then no default CSS is generated. Likewise if the
+<parameter>make.clean.html</parameter> parameter is set to zero,
+then no default CSS is generated. The 
+<parameter>custom.css.source</parameter> parameter can be used
+instead to generate a complete custom CSS file.</para>
+
+<para>You can use the <parameter>generate.css.header</parameter>
+parameter to instead write the CSS to each HTML <tag>HEAD</tag>
+element in a <tag>style</tag> tag instead of an external CSS file.</para>
+
+  </refsection>
+</refentry>
Index: params/docbook.css.link.xml
===================================================================
--- params/docbook.css.link.xml	(Revision 0)
+++ params/docbook.css.link.xml	(Revision 8900)
@@ -0,0 +1,42 @@
+<refentry xmlns="http://docbook.org/ns/docbook";
+          xmlns:xlink="http://www.w3.org/1999/xlink";
+          xmlns:xi="http://www.w3.org/2001/XInclude";
+          xmlns:src="http://nwalsh.com/xmlns/litprog/fragment";
+          xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
+          version="5.0" xml:id="docbook.css.link">
+<refmeta>
+<refentrytitle>docbook.css.link</refentrytitle>
+<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>docbook.css.link</refname>
+<refpurpose>Insert a link referencing the default CSS stylesheet</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment xml:id="docbook.css.link.frag">
+<xsl:param name="docbook.css.link" select="1"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsection><info><title>Description</title></info>
+
+<para>The stylesheets are capable of generating a default
+CSS stylesheet file.  The parameters 
+<parameter>make.clean.html</parameter> and
+<parameter>docbook.css.source</parameter> control that feature.</para>
+
+<para>Normally if a default CSS file is generated, then 
+the stylesheet inserts a <tag>link</tag> tag in the HTML
+<tag>HEAD</tag> element to reference it.
+However, you can omit that <tag>link</tag> reference if
+you set the <parameter>docbook.css.link</parameter> to zero
+(1 is the default).</para>
+
+<para>This parameter is useful when you want to import the 
+default CSS into a custom CSS file generated using the
+<parameter>custom.css.source</parameter> parameter.
+</para>
+
+</refsection>
+</refentry>
Index: params/default.image.width.xml
===================================================================
--- params/default.image.width.xml	(Revision 8504)
+++ params/default.image.width.xml	(Revision 8900)
@@ -22,10 +22,9 @@
 <refsection><info><title>Description</title></info>
 
 <para>If specified, this value will be used for the
-<tag class="attribute">width</tag> attribute on
-images that do not specify any
-<link xlink:href="http://docbook.org/tdg/en/html/imagedata.html#viewport.area";>viewport
-dimensions</link>.</para>
+<tag class="attribute">width</tag> attribute on images that do not specify any 
+<emphasis xlink:title="DocBook 5: The Definitive Guide"
+	  xlink:href="http://docbook.org/tdg5/en/html/imagedata.html#viewport.area";>viewport dimensions</emphasis>.</para>
 
 </refsection>
 </refentry>
Index: params/toc.line.properties.xml
===================================================================
--- params/toc.line.properties.xml	(Revision 8504)
+++ params/toc.line.properties.xml	(Revision 8900)
@@ -10,7 +10,7 @@
 </refmeta>
 <refnamediv>
 <refname>toc.line.properties</refname>
-<refpurpose>Properties for lines in ToC and LoTs</refpurpose>
+<refpurpose>Properties for lines in ToCs and LoTs</refpurpose>
 </refnamediv>
 
 <refsynopsisdiv>
@@ -28,13 +28,15 @@
 
 <para>Properties which are applied to every line in ToC (or LoT). You can
 modify them in order to change appearance of all, or some lines. For
-example in order to make lines for chapters in bold specify the
-following in your customization layer.</para>
+example, in order to make lines for chapters bold, specify the
+following in your customization layer:</para>
 
 <programlisting>&lt;xsl:attribute-set name="toc.line.properties"&gt;
   &lt;xsl:attribute name="font-weight"&gt;
-    &lt;xsl:when test="self::chapter | self::preface | self::appendix"&gt;bold&lt;/xsl:when&gt;
+   &lt;xsl:choose>
+    &lt;xsl:when test="self::chapter">bold&lt;/xsl:when&gt;
     &lt;xsl:otherwise&gt;normal&lt;/xsl:otherwise&gt;
+   &lt;/xsl:choose>
   &lt;/xsl:attribute&gt;
 &lt;/xsl:attribute-set&gt;</programlisting>
 
Index: params/tex.math.in.alt.xml
===================================================================
--- params/tex.math.in.alt.xml	(Revision 8504)
+++ params/tex.math.in.alt.xml	(Revision 8900)
@@ -72,12 +72,5 @@ equations in your document.</para>
     <parameter>passivetex.extensions</parameter>,
     <parameter>tex.math.file</parameter></para>
 </refsection>
-<refsection><info><title>More information</title></info>
-  <para>For how-to documentation on embedding TeX equations and
-    generating output from them, see
-    <link
-      role="tcg"
-      xlink:href="TexMath.html"
-      >DBTeXMath</link>.</para>
-</refsection>
+
 </refentry>
Index: params/draft.watermark.image.xml
===================================================================
--- params/draft.watermark.image.xml	(Revision 8504)
+++ params/draft.watermark.image.xml	(Revision 8900)
@@ -15,7 +15,7 @@
 
 <refsynopsisdiv>
 <src:fragment xml:id="draft.watermark.image.frag">
-<xsl:param name="draft.watermark.image">http://docbook.sourceforge.net/release/images/draft.png</xsl:param>
+<xsl:param name="draft.watermark.image">images/draft.png</xsl:param>
 </src:fragment>
 </refsynopsisdiv>
 
Index: params/callouts.extension.xml
===================================================================
--- params/callouts.extension.xml	(Revision 8504)
+++ params/callouts.extension.xml	(Revision 8900)
@@ -22,7 +22,7 @@
 <refsection><info><title>Description</title></info>
 <!-- DP. Note this is not used in the same manner as callout.graphics.extension -->
 <para>The callouts extension processes <tag>areaset</tag>
-elements in <tag>ProgramListingCO</tag> and other text-based
+elements in <tag>programlistingco</tag> and other text-based
 callout elements.
 </para>
 
Index: params/htmlhelp.hhc.folders.instead.books.xml
===================================================================
--- params/htmlhelp.hhc.folders.instead.books.xml	(Revision 8504)
+++ params/htmlhelp.hhc.folders.instead.books.xml	(Revision 8900)
@@ -21,11 +21,9 @@
 
 <refsection><info><title>Description</title></info>
 
-<para>Set non-zero for folder-like icons or zero for book-like icons in the TOC
-ToC. If you want to use folder-like icons you must swith off binary
-ToC using (xref) <parameter>htmlhelp.hhc.binary</parameter>.
-
-
+<para>Set to non-zero for folder-like icons or zero for book-like icons in the ToC. 
+If you want to use folder-like icons, you must switch off the binary ToC using 
+<parameter>htmlhelp.hhc.binary</parameter>.
 
 </para>
 
Index: common/l10n.xsl
===================================================================
--- common/l10n.xsl	(Revision 8504)
+++ common/l10n.xsl	(Revision 8900)
@@ -17,6 +17,14 @@
 
 <xsl:param name="l10n.xml" select="document('../common/l10n.xml')"/>
 <xsl:param name="local.l10n.xml" select="document('')"/>
+<xsl:param name="empty.local.l10n.xml" select="not($local.l10n.xml//l:l10n)"/>
+
+<xsl:key name="l10n-lang" match="l:l10n" use="@language"/>
+<xsl:key name="l10n-gentext" match="l:l10n/l:gentext" use="@key"/>
+<xsl:key name="l10n-dingbat" match="l:l10n/l:dingbat" use="@key"/>
+<xsl:key name="l10n-context" match="l:l10n/l:context" use="@name"/>
+<xsl:key name="l10n-template" match="l:l10n/l:context/l:template[not(@style)]" use="@name"/>
+<xsl:key name="l10n-template-style" match="l:l10n/l:context/l:template[@style]" use="concat(@name, '#', @style)"/>
 
 <xsl:template name="l10n.language">
   <xsl:param name="target" select="."/>
@@ -66,52 +74,44 @@
   </xsl:variable>
 
   <xsl:variable name="language" select="translate($mc-language,
-                                        'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
-                                        'abcdefghijklmnopqrstuvwxyz')"/>
+                                        'ABCDEFGHIJKLMNOPQRSTUVWXYZ-',
+                                        'abcdefghijklmnopqrstuvwxyz_')"/>
 
-  <xsl:variable name="adjusted.language">
+  <xsl:for-each select="$l10n.xml">   <!-- We need to change context in order to get key work -->
     <xsl:choose>
-      <xsl:when test="contains($language,'-')">
-        <xsl:value-of select="substring-before($language,'-')"/>
-        <xsl:text>_</xsl:text>
-        <xsl:value-of select="substring-after($language,'-')"/>
+      <xsl:when test="key('l10n-lang', $language)">
+        <xsl:value-of select="$language"/>
       </xsl:when>
+      <!-- try just the lang code without country -->
+      <xsl:when test="key('l10n-lang', substring-before($language,'_'))">
+        <xsl:value-of select="substring-before($language,'_')"/>
+      </xsl:when>
+      <!-- or use the default -->
       <xsl:otherwise>
-        <xsl:value-of select="$language"/>
+        <xsl:message>
+          <xsl:text>No localization exists for "</xsl:text>
+          <xsl:value-of select="$language"/>
+          <xsl:text>" or "</xsl:text>
+          <xsl:value-of select="substring-before($language,'_')"/>
+          <xsl:text>". Using default "</xsl:text>
+          <xsl:value-of select="$l10n.gentext.default.language"/>
+          <xsl:text>".</xsl:text>
+        </xsl:message>
+        <xsl:value-of select="$l10n.gentext.default.language"/>
       </xsl:otherwise>
     </xsl:choose>
-  </xsl:variable>
-
-  <xsl:choose>
-    <xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=$adjusted.language]">
-      <xsl:value-of select="$adjusted.language"/>
-    </xsl:when>
-    <!-- try just the lang code without country -->
-    <xsl:when test="$l10n.xml/l:i18n/l:l10n[@language=substring-before($adjusted.language,'_')]">
-      <xsl:value-of select="substring-before($adjusted.language,'_')"/>
-    </xsl:when>
-    <!-- or use the default -->
-    <xsl:otherwise>
-      <xsl:message>
-        <xsl:text>No localization exists for "</xsl:text>
-        <xsl:value-of select="$adjusted.language"/>
-        <xsl:text>" or "</xsl:text>
-        <xsl:value-of select="substring-before($adjusted.language,'_')"/>
-        <xsl:text>". Using default "</xsl:text>
-        <xsl:value-of select="$l10n.gentext.default.language"/>
-        <xsl:text>".</xsl:text>
-      </xsl:message>
-      <xsl:value-of select="$l10n.gentext.default.language"/>
-    </xsl:otherwise>
-  </xsl:choose>
+  </xsl:for-each>
 </xsl:template>
 
-<xsl:template name="l10.language.name">
+<xsl:template name="l10n.language.name">
   <xsl:param name="lang">
     <xsl:call-template name="l10n.language"/>
   </xsl:param>
-  <xsl:value-of
-    select="$l10n.xml/l:i18n/l:l10n[@language=$lang]/@english-language-name"/>
+
+  <xsl:for-each select="$l10n.xml">
+    <xsl:value-of
+	select="document(key('l10n-lang', $lang)/@href)/l:l10n/@english-language-name"/>
+  </xsl:for-each>
 </xsl:template>
 
 <xsl:template name="language.attribute">
@@ -214,39 +214,47 @@
     <xsl:call-template name="l10n.language"/>
   </xsl:param>
 
-  <xsl:variable name="local.l10n.gentext"
-                select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
+  <xsl:for-each select="$l10n.xml">  <!-- We need to switch context in order to make key() work -->
+    <xsl:for-each select="document(key('l10n-lang', $lang)/@href)">
+      <xsl:variable name="local.l10n.gentext"
+		    select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
 
-  <xsl:variable name="l10n.gentext"
-                select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:gentext[@key=$key])[1]"/>
+      <xsl:variable name="l10n.gentext"
+		    select="key('l10n-gentext', $key)[1]"/>
 
-  <xsl:choose>
-    <xsl:when test="$local.l10n.gentext">
-      <xsl:value-of select="$local.l10n.gentext/@text"/>
-    </xsl:when>
-    <xsl:when test="$l10n.gentext">
-      <xsl:value-of select="$l10n.gentext/@text"/>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:message>
-        <xsl:text>No "</xsl:text>
-        <xsl:value-of select="$lang"/>
-        <xsl:text>" localization of "</xsl:text>
-        <xsl:value-of select="$key"/>
-        <xsl:text>" exists</xsl:text>
-        <xsl:choose>
-          <xsl:when test="$lang = 'en'">
-             <xsl:text>.</xsl:text>
-          </xsl:when>
-          <xsl:otherwise>
-             <xsl:text>; using "en".</xsl:text>
-          </xsl:otherwise>
-        </xsl:choose>
-      </xsl:message>
-
-      <xsl:value-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:gentext[@key=$key])[1]/@text"/>
-    </xsl:otherwise>
-  </xsl:choose>
+      <xsl:choose>
+	<xsl:when test="$local.l10n.gentext">
+	  <xsl:value-of select="$local.l10n.gentext/@text"/>
+	</xsl:when>
+	<xsl:when test="$l10n.gentext">
+	  <xsl:value-of select="$l10n.gentext/@text"/>
+	</xsl:when>
+	<xsl:otherwise>
+	  <xsl:message>
+	    <xsl:text>No "</xsl:text>
+	    <xsl:value-of select="$lang"/>
+	    <xsl:text>" localization of "</xsl:text>
+	    <xsl:value-of select="$key"/>
+	    <xsl:text>" exists</xsl:text>
+	    <xsl:choose>
+	      <xsl:when test="$lang = 'en'">
+		 <xsl:text>.</xsl:text>
+	      </xsl:when>
+	      <xsl:otherwise>
+		 <xsl:text>; using "en".</xsl:text>
+	      </xsl:otherwise>
+	    </xsl:choose>
+	  </xsl:message>
+	  
+	  <xsl:for-each select="$l10n.xml">  <!-- We need to switch context in order to make key() work -->
+	    <xsl:for-each select="document(key('l10n-lang', 'en')/@href)">
+	      <xsl:value-of select="key('l10n-gentext', $key)[1]/@text"/>
+	    </xsl:for-each>
+	  </xsl:for-each>
+	</xsl:otherwise>
+      </xsl:choose>
+    </xsl:for-each>
+  </xsl:for-each>
 </xsl:template>
 
 <xsl:template name="gentext.element.name">
@@ -283,31 +291,39 @@
     <xsl:call-template name="l10n.language"/>
   </xsl:param>
 
-  <xsl:variable name="local.l10n.dingbat"
-                select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
+  <xsl:for-each select="$l10n.xml">  <!-- We need to switch context in order to make key() work -->
+    <xsl:for-each select="document(key('l10n-lang', $lang)/@href)">
+      <xsl:variable name="local.l10n.dingbat"
+		    select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
 
-  <xsl:variable name="l10n.dingbat"
-                select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:dingbat[@key=$dingbat])[1]"/>
+      <xsl:variable name="l10n.dingbat"
+		    select="key('l10n-dingbat', $dingbat)[1]"/>
 
-  <xsl:choose>
-    <xsl:when test="$local.l10n.dingbat">
-      <xsl:value-of select="$local.l10n.dingbat/@text"/>
-    </xsl:when>
-    <xsl:when test="$l10n.dingbat">
-      <xsl:value-of select="$l10n.dingbat/@text"/>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:message>
-        <xsl:text>No "</xsl:text>
-        <xsl:value-of select="$lang"/>
-        <xsl:text>" localization of dingbat </xsl:text>
-        <xsl:value-of select="$dingbat"/>
-        <xsl:text> exists; using "en".</xsl:text>
-      </xsl:message>
-
-      <xsl:value-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:dingbat[@key=$dingbat])[1]/@text"/>
-    </xsl:otherwise>
-  </xsl:choose>
+      <xsl:choose>
+	<xsl:when test="$local.l10n.dingbat">
+	  <xsl:value-of select="$local.l10n.dingbat/@text"/>
+	</xsl:when>
+	<xsl:when test="$l10n.dingbat">
+	  <xsl:value-of select="$l10n.dingbat/@text"/>
+	</xsl:when>
+	<xsl:otherwise>
+	  <xsl:message>
+	    <xsl:text>No "</xsl:text>
+	    <xsl:value-of select="$lang"/>
+	    <xsl:text>" localization of dingbat </xsl:text>
+	    <xsl:value-of select="$dingbat"/>
+	    <xsl:text> exists; using "en".</xsl:text>
+	  </xsl:message>
+
+	  <xsl:for-each select="$l10n.xml">  <!-- We need to switch context in order to make key() work -->
+	    <xsl:for-each select="document(key('l10n-lang', 'en')/@href)">  
+	      <xsl:value-of select="key('l10n-dingbat', $dingbat)[1]/@text"/>
+	    </xsl:for-each>
+	  </xsl:for-each>
+	</xsl:otherwise>
+      </xsl:choose>
+    </xsl:for-each>
+  </xsl:for-each>
 </xsl:template>
 
 <xsl:template name="gentext.startquote">
@@ -372,91 +388,172 @@
   </xsl:param>
   <xsl:param name="verbose" select="1"/>
 
-  <xsl:variable name="local.localization.node"
-                select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang])[1]"/>
-
-  <xsl:variable name="localization.node"
-                select="($l10n.xml/l:i18n/l:l10n[@language=$lang])[1]"/>
-
-  <xsl:if test="count($localization.node) = 0
-                and count($local.localization.node) = 0
-                and $verbose != 0">
-    <xsl:message>
-      <xsl:text>No "</xsl:text>
-      <xsl:value-of select="$lang"/>
-      <xsl:text>" localization exists.</xsl:text>
-    </xsl:message>
-  </xsl:if>
-
-  <xsl:variable name="local.context.node"
-                select="$local.localization.node/l:context[@name=$context]"/>
-
-  <xsl:variable name="context.node"
-                select="$localization.node/l:context[@name=$context]"/>
-
-  <xsl:if test="count($context.node) = 0
-                and count($local.context.node) = 0
-                and $verbose != 0">
-    <xsl:message>
-      <xsl:text>No context named "</xsl:text>
-      <xsl:value-of select="$context"/>
-      <xsl:text>" exists in the "</xsl:text>
-      <xsl:value-of select="$lang"/>
-      <xsl:text>" localization.</xsl:text>
-    </xsl:message>
-  </xsl:if>
-
-  <xsl:variable name="local.template.node"
-                select="($local.context.node/l:template[@name=$name
-                                                        and @style
-                                                        and @style=$xrefstyle]
-                        |$local.context.node/l:template[@name=$name
-                                                        and not(@style)])[1]"/>
-
-  <xsl:variable name="template.node"
-                select="($context.node/l:template[@name=$name
-                                                  and @style
-                                                  and @style=$xrefstyle]
-                        |$context.node/l:template[@name=$name
-                                                  and not(@style)])[1]"/>
-
   <xsl:choose>
-    <xsl:when test="$local.template.node/@text">
-      <xsl:value-of select="$local.template.node/@text"/>
-    </xsl:when>
-    <xsl:when test="$template.node/@text">
-      <xsl:value-of select="$template.node/@text"/>
+    <xsl:when test="$empty.local.l10n.xml">
+      <xsl:for-each select="$l10n.xml">  <!-- We need to switch context in order to make key() work -->
+	<xsl:for-each select="document(key('l10n-lang', $lang)/@href)">
+
+	  <xsl:variable name="localization.node"
+			select="key('l10n-lang', $lang)[1]"/>
+
+	  <xsl:if test="count($localization.node) = 0
+			and $verbose != 0">
+	    <xsl:message>
+	      <xsl:text>No "</xsl:text>
+	      <xsl:value-of select="$lang"/>
+	      <xsl:text>" localization exists.</xsl:text>
+	    </xsl:message>
+	  </xsl:if>
+
+	  <xsl:variable name="context.node"
+			select="key('l10n-context', $context)[1]"/>
+
+	  <xsl:if test="count($context.node) = 0
+			and $verbose != 0">
+	    <xsl:message>
+	      <xsl:text>No context named "</xsl:text>
+	      <xsl:value-of select="$context"/>
+	      <xsl:text>" exists in the "</xsl:text>
+	      <xsl:value-of select="$lang"/>
+	      <xsl:text>" localization.</xsl:text>
+	    </xsl:message>
+	  </xsl:if>
+
+	  <xsl:for-each select="$context.node">
+	    <xsl:variable name="template.node"
+			  select="(key('l10n-template-style', concat($name, '#', $xrefstyle))
+				   |key('l10n-template', $name))[1]"/>
+
+	    <xsl:choose>
+	      <xsl:when test="$template.node/@text">
+		<xsl:value-of select="$template.node/@text"/>
+	      </xsl:when>
+	      <xsl:otherwise>
+		<xsl:choose>
+		  <xsl:when test="contains($name, '/')">
+		    <xsl:call-template name="gentext.template">
+		      <xsl:with-param name="context" select="$context"/>
+		      <xsl:with-param name="name" select="substring-after($name, '/')"/>
+		      <xsl:with-param name="origname" select="$origname"/>
+		      <xsl:with-param name="purpose" select="$purpose"/>
+		      <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+		      <xsl:with-param name="referrer" select="$referrer"/>
+		      <xsl:with-param name="lang" select="$lang"/>
+		      <xsl:with-param name="verbose" select="$verbose"/>
+		    </xsl:call-template>
+		  </xsl:when>
+		  <xsl:when test="$verbose = 0">
+		    <!-- silence -->
+		  </xsl:when>
+		  <xsl:otherwise>
+		    <xsl:message>
+		      <xsl:text>No template for "</xsl:text>
+		      <xsl:value-of select="$origname"/>
+		      <xsl:text>" (or any of its leaves) exists in the context named "</xsl:text>
+		      <xsl:value-of select="$context"/>
+		      <xsl:text>" in the "</xsl:text>
+		      <xsl:value-of select="$lang"/>
+		      <xsl:text>" localization.</xsl:text>
+		    </xsl:message>
+		  </xsl:otherwise>
+		</xsl:choose>
+	      </xsl:otherwise>
+	    </xsl:choose>
+	  </xsl:for-each>
+	</xsl:for-each>
+      </xsl:for-each>
     </xsl:when>
     <xsl:otherwise>
-      <xsl:choose>
-        <xsl:when test="contains($name, '/')">
-          <xsl:call-template name="gentext.template">
-            <xsl:with-param name="context" select="$context"/>
-            <xsl:with-param name="name" select="substring-after($name, '/')"/>
-            <xsl:with-param name="origname" select="$origname"/>
-            <xsl:with-param name="purpose" select="$purpose"/>
-            <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
-            <xsl:with-param name="referrer" select="$referrer"/>
-            <xsl:with-param name="lang" select="$lang"/>
-            <xsl:with-param name="verbose" select="$verbose"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:when test="$verbose = 0">
-          <!-- silence -->
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:message>
-            <xsl:text>No template for "</xsl:text>
-            <xsl:value-of select="$origname"/>
-            <xsl:text>" (or any of its leaves) exists
-in the context named "</xsl:text>
-            <xsl:value-of select="$context"/>
-            <xsl:text>" in the "</xsl:text>
-            <xsl:value-of select="$lang"/>
-            <xsl:text>" localization.</xsl:text>
-          </xsl:message>
-        </xsl:otherwise>
-      </xsl:choose>
+      <xsl:for-each select="$l10n.xml">  <!-- We need to switch context in order to make key() work -->
+	<xsl:for-each select="document(key('l10n-lang', $lang)/@href)">
+
+	  <xsl:variable name="local.localization.node"
+			select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang])[1]"/>
+
+	  <xsl:variable name="localization.node"
+			select="key('l10n-lang', $lang)[1]"/>
+
+	  <xsl:if test="count($localization.node) = 0
+			and count($local.localization.node) = 0
+			and $verbose != 0">
+	    <xsl:message>
+	      <xsl:text>No "</xsl:text>
+	      <xsl:value-of select="$lang"/>
+	      <xsl:text>" localization exists.</xsl:text>
+	    </xsl:message>
+	  </xsl:if>
+
+	  <xsl:variable name="local.context.node"
+			select="$local.localization.node/l:context[@name=$context]"/>
+
+	  <xsl:variable name="context.node"
+			select="key('l10n-context', $context)[1]"/>
+
+	  <xsl:if test="count($context.node) = 0
+			and count($local.context.node) = 0
+			and $verbose != 0">
+	    <xsl:message>
+	      <xsl:text>No context named "</xsl:text>
+	      <xsl:value-of select="$context"/>
+	      <xsl:text>" exists in the "</xsl:text>
+	      <xsl:value-of select="$lang"/>
+	      <xsl:text>" localization.</xsl:text>
+	    </xsl:message>
+	  </xsl:if>
+
+	  <xsl:variable name="local.template.node"
+			select="($local.context.node/l:template[@name=$name
+								and @style
+								and @style=$xrefstyle]
+				|$local.context.node/l:template[@name=$name
+								and not(@style)])[1]"/>
+
+	  <xsl:for-each select="$context.node">
+	    <xsl:variable name="template.node"
+			  select="(key('l10n-template-style', concat($name, '#', $xrefstyle))
+				   |key('l10n-template', $name))[1]"/>
+
+	    <xsl:choose>
+	      <xsl:when test="$local.template.node/@text">
+		<xsl:value-of select="$local.template.node/@text"/>
+	      </xsl:when>
+	      <xsl:when test="$template.node/@text">
+		<xsl:value-of select="$template.node/@text"/>
+	      </xsl:when>
+	      <xsl:otherwise>
+		<xsl:choose>
+		  <xsl:when test="contains($name, '/')">
+		    <xsl:call-template name="gentext.template">
+		      <xsl:with-param name="context" select="$context"/>
+		      <xsl:with-param name="name" select="substring-after($name, '/')"/>
+		      <xsl:with-param name="origname" select="$origname"/>
+		      <xsl:with-param name="purpose" select="$purpose"/>
+		      <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+		      <xsl:with-param name="referrer" select="$referrer"/>
+		      <xsl:with-param name="lang" select="$lang"/>
+		      <xsl:with-param name="verbose" select="$verbose"/>
+		    </xsl:call-template>
+		  </xsl:when>
+		  <xsl:when test="$verbose = 0">
+		    <!-- silence -->
+		  </xsl:when>
+		  <xsl:otherwise>
+		    <xsl:message>
+		      <xsl:text>No template for "</xsl:text>
+		      <xsl:value-of select="$origname"/>
+		      <xsl:text>" (or any of its leaves) exists in the context named "</xsl:text>
+		      <xsl:value-of select="$context"/>
+		      <xsl:text>" in the "</xsl:text>
+		      <xsl:value-of select="$lang"/>
+		      <xsl:text>" localization.</xsl:text>
+		    </xsl:message>
+		  </xsl:otherwise>
+		</xsl:choose>
+	      </xsl:otherwise>
+	    </xsl:choose>
+	  </xsl:for-each>
+	</xsl:for-each>
+      </xsl:for-each>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>
@@ -493,5 +590,4 @@ in the context named "</xsl:text>
   </xsl:choose>
 </xsl:template>
 
-</xsl:stylesheet>
-
+</xsl:stylesheet>
\ Kein Zeilenumbruch am Dateiende.
Index: common/olink.xsl
===================================================================
--- common/olink.xsl	(Revision 8504)
+++ common/olink.xsl	(Revision 8900)
@@ -2,6 +2,16 @@
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 version="1.0">
 
+<!-- ********************************************************************
+     $Id$
+     ********************************************************************
+
+     This file is part of the DocBook XSL Stylesheet distribution.
+     See ../README or http://docbook.sf.net/ for copyright
+     copyright and other information.
+
+     ******************************************************************** -->
+
 <!-- Create keys for quickly looking up olink targets -->
 <xsl:key name="targetdoc-key" match="document" use="@targetdoc" />
 <xsl:key name="targetptr-key"  match="div|obj"
@@ -857,7 +867,7 @@
               <xsl:for-each select="$target.database" >
                 <xsl:call-template name="insert.targetdb.data">
                   <xsl:with-param name="data"
-                                  select="key('targetptr-key', $olink.key)/ttl" />
+                                  select="key('targetptr-key', $olink.key)/ttl/node()"/>
                 </xsl:call-template>
               </xsl:for-each>
             </xsl:with-param>
@@ -877,7 +887,7 @@
               <xsl:for-each select="$target.database" >
                 <xsl:call-template name="insert.targetdb.data">
                   <xsl:with-param name="data"
-                       select="key('targetdoc-key', $targetdoc)[1]/div[1]/ttl" />
+                       select="key('targetdoc-key', $targetdoc)[1]/div[1]/ttl/node()" />
                 </xsl:call-template>
               </xsl:for-each>
             </xsl:with-param>
@@ -946,7 +956,7 @@
               <xsl:for-each select="$target.database" >
                 <xsl:call-template name="insert.targetdb.data">
                   <xsl:with-param name="data"
-                                  select="key('targetptr-key', $olink.key)[1]/ttl" />
+                               select="key('targetptr-key', $olink.key)[1]/ttl/node()" />
                 </xsl:call-template>
               </xsl:for-each>
             </xsl:with-param>
@@ -1156,7 +1166,7 @@
     <xsl:for-each select="$target.database" >
       <xsl:call-template name="insert.targetdb.data">
         <xsl:with-param name="data"
-             select="key('targetdoc-key', $targetdoc)[1]/div[1]/ttl" />
+             select="key('targetdoc-key', $targetdoc)[1]/div[1]/ttl/node()" />
       </xsl:call-template>
     </xsl:for-each>
   </xsl:variable>
Index: common/gentext.xsl
===================================================================
--- common/gentext.xsl	(Revision 8504)
+++ common/gentext.xsl	(Revision 8900)
@@ -234,6 +234,9 @@
 
   <xsl:variable name="context">
     <xsl:choose>
+      <xsl:when test="self::equation and not(title) and not(info/title)">
+         <xsl:value-of select="'xref-number'"/>
+      </xsl:when>
       <xsl:when test="string($autonumber) != 0 
                       and $number-and-title-template != 0
                       and $xref.with.number.and.title != 0">
@@ -397,7 +400,7 @@
       <xsl:message>
         <xsl:text>Xref is only supported to listitems in an</xsl:text>
         <xsl:text> orderedlist: </xsl:text>
-        <xsl:value-of select="@id|@xml:id"/>
+        <xsl:value-of select=".//@id|.//@xml:id"/>
       </xsl:message>
       <xsl:text>???</xsl:text>
     </xsl:when>
Index: common/l10n.dtd
===================================================================
--- common/l10n.dtd	(Revision 8504)
+++ common/l10n.dtd	(Revision 8900)
@@ -23,6 +23,7 @@
 	%xmlns;		CDATA	#FIXED %uri;
 	language	CDATA	#REQUIRED
 	english-language-name	CDATA	#IMPLIED
+	href            CDATA   #IMPLIED
 >
 
 <!ELEMENT %gentext; EMPTY>
Index: common/autoidx-kimber.xsl
===================================================================
--- common/autoidx-kimber.xsl	(Revision 8504)
+++ common/autoidx-kimber.xsl	(Revision 8900)
@@ -1,6 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE xsl:stylesheet [
-<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas)]))'>
+<!ENTITY % common.entities SYSTEM "entities.ent">
+%common.entities;
 <!-- Documents using the kimber index method must have a lang attribute -->
 <!-- Only one of these should be present in the entity -->
 
Index: common/autoidx-kosek.xsl
===================================================================
--- common/autoidx-kosek.xsl	(Revision 8504)
+++ common/autoidx-kosek.xsl	(Revision 8900)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <!DOCTYPE xsl:stylesheet [
-<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas)]))'>
-
+<!ENTITY % common.entities SYSTEM "entities.ent">
+%common.entities;
 ]>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 version="1.0"
@@ -48,34 +48,36 @@
     <xsl:variable name="local.l10n.letters"
       select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
     
-    <xsl:variable name="l10n.letters"
-      select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
-    
-    <xsl:choose>
-      <xsl:when test="count($local.l10n.letters) &gt; 0">
-        <xsl:copy-of select="$local.l10n.letters"/>
-      </xsl:when>
-      <xsl:when test="count($l10n.letters) &gt; 0">
-        <xsl:copy-of select="$l10n.letters"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:message>
-          <xsl:text>No "</xsl:text>
-          <xsl:value-of select="$lang"/>
-          <xsl:text>" localization of index grouping letters exists</xsl:text>
-          <xsl:choose>
-            <xsl:when test="$lang = 'en'">
-              <xsl:text>.</xsl:text>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:text>; using "en".</xsl:text>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:message>
-        
-        <xsl:copy-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:letters)[1]"/>
-      </xsl:otherwise>
-    </xsl:choose>
+    <xsl:for-each select="$l10n.xml">
+      <xsl:variable name="l10n.letters"
+	select="document(key('l10n-lang', $lang)/@href)/l:l10n/l:letters[1]"/>
+
+      <xsl:choose>
+	<xsl:when test="count($local.l10n.letters) &gt; 0">
+	  <xsl:copy-of select="$local.l10n.letters"/>
+	</xsl:when>
+	<xsl:when test="count($l10n.letters) &gt; 0">
+	  <xsl:copy-of select="$l10n.letters"/>
+	</xsl:when>
+	<xsl:otherwise>
+	  <xsl:message>
+	    <xsl:text>No "</xsl:text>
+	    <xsl:value-of select="$lang"/>
+	    <xsl:text>" localization of index grouping letters exists</xsl:text>
+	    <xsl:choose>
+	      <xsl:when test="$lang = 'en'">
+		<xsl:text>.</xsl:text>
+	      </xsl:when>
+	      <xsl:otherwise>
+		<xsl:text>; using "en".</xsl:text>
+	      </xsl:otherwise>
+	    </xsl:choose>
+	  </xsl:message>
+
+	  <xsl:copy-of select="document(key('l10n-lang', 'en'))/l:l10n/l:letters[1]"/>
+	</xsl:otherwise>
+      </xsl:choose>
+    </xsl:for-each>
   </xsl:variable>
   
   <xsl:variable name="letters" select="exslt:node-set($letters-rtf)/*"/>
@@ -108,34 +110,36 @@
     <xsl:variable name="local.l10n.letters"
       select="($local.l10n.xml//l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
     
-    <xsl:variable name="l10n.letters"
-      select="($l10n.xml/l:i18n/l:l10n[@language=$lang]/l:letters)[1]"/>
-    
-    <xsl:choose>
-      <xsl:when test="count($local.l10n.letters) &gt; 0">
-        <xsl:copy-of select="$local.l10n.letters"/>
-      </xsl:when>
-      <xsl:when test="count($l10n.letters) &gt; 0">
-        <xsl:copy-of select="$l10n.letters"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:message>
-          <xsl:text>No "</xsl:text>
-          <xsl:value-of select="$lang"/>
-          <xsl:text>" localization of index grouping letters exists</xsl:text>
-          <xsl:choose>
-            <xsl:when test="$lang = 'en'">
-              <xsl:text>.</xsl:text>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:text>; using "en".</xsl:text>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:message>
-        
-        <xsl:copy-of select="($l10n.xml/l:i18n/l:l10n[@language='en']/l:letters)[1]"/>
-      </xsl:otherwise>
-    </xsl:choose>
+    <xsl:for-each select="$l10n.xml">
+      <xsl:variable name="l10n.letters"
+	select="document(key('l10n-lang', $lang)/@href)/l:l10n/l:letters[1]"/>
+
+      <xsl:choose>
+	<xsl:when test="count($local.l10n.letters) &gt; 0">
+	  <xsl:copy-of select="$local.l10n.letters"/>
+	</xsl:when>
+	<xsl:when test="count($l10n.letters) &gt; 0">
+	  <xsl:copy-of select="$l10n.letters"/>
+	</xsl:when>
+	<xsl:otherwise>
+	  <xsl:message>
+	    <xsl:text>No "</xsl:text>
+	    <xsl:value-of select="$lang"/>
+	    <xsl:text>" localization of index grouping letters exists</xsl:text>
+	    <xsl:choose>
+	      <xsl:when test="$lang = 'en'">
+		<xsl:text>.</xsl:text>
+	      </xsl:when>
+	      <xsl:otherwise>
+		<xsl:text>; using "en".</xsl:text>
+	      </xsl:otherwise>
+	    </xsl:choose>
+	  </xsl:message>
+
+	  <xsl:copy-of select="document(key('l10n-lang', 'en')/@href)/l:l10n/l:letters[1]"/>
+	</xsl:otherwise>
+      </xsl:choose>
+    </xsl:for-each>
   </xsl:variable>
   
   <xsl:variable name="letters" select="exslt:node-set($letters-rtf)/*"/>
Index: common/common.xsl
===================================================================
--- common/common.xsl	(Revision 8504)
+++ common/common.xsl	(Revision 8900)
@@ -1316,8 +1316,8 @@ pointed to by the link is one of the ele
   <xsl:choose>
     <xsl:when test="not($list/@continuation = 'continues')">
       <xsl:choose>
-        <xsl:when test="@startingnumber">
-          <xsl:value-of select="@startingnumber"/>
+        <xsl:when test="$list/@startingnumber">
+          <xsl:value-of select="$list/@startingnumber"/>
         </xsl:when>
         <xsl:when test="$pi-start != ''">
           <xsl:value-of select="$pi-start"/>
Index: common/stripns.xsl
===================================================================
--- common/stripns.xsl	(Revision 8504)
+++ common/stripns.xsl	(Revision 8900)
@@ -184,6 +184,11 @@
 
 <xsl:template match="db:link[@xlink:href]" mode="stripNS">
   <ulink url="{@xlink:href}">
+    <xsl:if test="@role">
+      <xsl:attribute name="role">
+        <xsl:value-of select="@role"/>
+      </xsl:attribute>
+    </xsl:if>
     <xsl:apply-templates mode="stripNS"/>
   </ulink>
 </xsl:template>
@@ -312,9 +317,26 @@
 </xsl:template>
 
 <xsl:template match="/" priority="-1">
+  <!-- need a local version of this variable because this module imported many places-->
+  <xsl:variable name="local.exsl.node.set.available">
+    <xsl:choose>
+      <xsl:when exsl:foo="" xmlns:exsl="http://exslt.org/common";
+        test="function-available('exsl:node-set') or
+                         contains(system-property('xsl:vendor'),
+                           'Apache Software Foundation')">1</xsl:when>
+      <xsl:otherwise>0</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
   <xsl:choose>
-    <xsl:when test="(*/self::ng:* or */self::db:*)">
-      <xsl:message>Stripping namespace from DocBook 5 document.</xsl:message>
+    <xsl:when test="$local.exsl.node.set.available != 0
+                    and (*/self::ng:* or */self::db:*)">
+      <xsl:message>
+        <xsl:text>Stripping namespace from DocBook 5 document. </xsl:text>
+        <xsl:text>It is suggested to use namespaced version of the stylesheets </xsl:text>
+        <xsl:text>available in distribution file 'docbook-xsl-ns' </xsl:text>
+        <xsl:text>at //http://sourceforge.net/projects/docbook/files/</xsl:text>
+        <xsl:text> which does not require namespace stripping step.</xsl:text>
+      </xsl:message>
       <xsl:variable name="nons">
         <xsl:apply-templates mode="stripNS"/>
       </xsl:variable>
Index: common/labels.xsl
===================================================================
--- common/labels.xsl	(Revision 8504)
+++ common/labels.xsl	(Revision 8900)
@@ -742,11 +742,11 @@ element label.</para>
             <xsl:apply-templates select="$pchap" mode="label.markup"/>
             <xsl:apply-templates select="$pchap" mode="intralabel.punctuation"/>
           </xsl:if>
-          <xsl:number format="1" count="equation[title or info/title]" 
+          <xsl:number format="1" count="equation" 
                       from="chapter|appendix" level="any"/>
         </xsl:when>
         <xsl:otherwise>
-          <xsl:number format="1" count="equation[title or info/title]" 
+          <xsl:number format="1" count="equation" 
                       from="book|article" level="any"/>
         </xsl:otherwise>
       </xsl:choose>
Index: common/l10n.xml
===================================================================
--- common/l10n.xml	(Revision 8504)
+++ common/l10n.xml	(Revision 8900)
@@ -1,131 +1,77 @@
 <?xml version='1.0'?>
-<!DOCTYPE l:i18n SYSTEM "l10n.dtd" [
-<!ENTITY af SYSTEM "af.xml">
-<!ENTITY am SYSTEM "am.xml">
-<!ENTITY ar SYSTEM "ar.xml">
-<!ENTITY az SYSTEM "az.xml">
-<!ENTITY bg SYSTEM "bg.xml">
-<!ENTITY bn SYSTEM "bn.xml">
-<!ENTITY bs SYSTEM "bs.xml">
-<!ENTITY ca SYSTEM "ca.xml">
-<!ENTITY cs SYSTEM "cs.xml">
-<!ENTITY cy SYSTEM "cy.xml">
-<!ENTITY da SYSTEM "da.xml">
-<!ENTITY de SYSTEM "de.xml">
-<!ENTITY el SYSTEM "el.xml">
-<!ENTITY en SYSTEM "en.xml">
-<!ENTITY eo SYSTEM "eo.xml">
-<!ENTITY es SYSTEM "es.xml">
-<!ENTITY et SYSTEM "et.xml">
-<!ENTITY eu SYSTEM "eu.xml">
-<!ENTITY fa SYSTEM "fa.xml">
-<!ENTITY fi SYSTEM "fi.xml">
-<!ENTITY fr SYSTEM "fr.xml">
-<!ENTITY ga SYSTEM "ga.xml">
-<!ENTITY gl SYSTEM "gl.xml">
-<!ENTITY gu SYSTEM "gu.xml">
-<!ENTITY he SYSTEM "he.xml">
-<!ENTITY hi SYSTEM "hi.xml">
-<!ENTITY hr SYSTEM "hr.xml">
-<!ENTITY hu SYSTEM "hu.xml">
-<!ENTITY id SYSTEM "id.xml">
-<!ENTITY it SYSTEM "it.xml">
-<!ENTITY ja SYSTEM "ja.xml">
-<!ENTITY kn SYSTEM "kn.xml">
-<!ENTITY ko SYSTEM "ko.xml">
-<!ENTITY la SYSTEM "la.xml">
-<!ENTITY lit SYSTEM "lt.xml">
-<!ENTITY lv SYSTEM "lv.xml">
-<!ENTITY mn SYSTEM "mn.xml">
-<!ENTITY nl SYSTEM "nl.xml">
-<!ENTITY nn SYSTEM "nn.xml">
-<!ENTITY nb SYSTEM "nb.xml">
-<!ENTITY or SYSTEM "or.xml">
-<!ENTITY pa SYSTEM "pa.xml">
-<!ENTITY pl SYSTEM "pl.xml">
-<!ENTITY pt_br SYSTEM "pt_br.xml">
-<!ENTITY pt SYSTEM "pt.xml">
-<!ENTITY ro SYSTEM "ro.xml">
-<!ENTITY ru SYSTEM "ru.xml">
-<!ENTITY sk SYSTEM "sk.xml">
-<!ENTITY sl SYSTEM "sl.xml">
-<!ENTITY sq SYSTEM "sq.xml">
-<!ENTITY sr_Latn SYSTEM "sr_Latn.xml">
-<!ENTITY sr SYSTEM "sr.xml">
-<!ENTITY sv SYSTEM "sv.xml">
-<!ENTITY ta SYSTEM "ta.xml">
-<!ENTITY th SYSTEM "th.xml">
-<!ENTITY tl SYSTEM "tl.xml">
-<!ENTITY tr SYSTEM "tr.xml">
-<!ENTITY uk SYSTEM "uk.xml">
-<!ENTITY vi SYSTEM "vi.xml">
-<!ENTITY xh SYSTEM "xh.xml">
-<!ENTITY zh SYSTEM "zh.xml">
-<!ENTITY zh_cn SYSTEM "zh_cn.xml">
-<!ENTITY zh_tw SYSTEM "zh_tw.xml">
-]>
+<!DOCTYPE l:i18n SYSTEM "l10n.dtd">
 <l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0";>
-&af;
-&am;
-&ar;
-&az;
-&bg;
-&bn;
-&bs;
-&ca;
-&cs;
-&cy;
-&da;
-&de;
-&el;
-&en;
-&eo;
-&es;
-&et;
-&eu;
-&fa;
-&fi;
-&fr;
-&ga;
-&gl;
-&gu;
-&he;
-&hi;
-&hr;
-&hu;
-&id;
-&it;
-&ja;
-&kn;
-&ko;
-&la;
-&lit;
-&lv;
-&mn;
-&nl;
-&nn;
-&nb;
-&or;
-&pa;
-&pl;
-&pt;
-&pt_br;
-&ro;
-&ru;
-&sk;
-&sl;
-&sq;
-&sr;
-&sr_Latn;
-&sv;
-&ta;
-&th;
-&tl;
-&tr;
-&uk;
-&vi;
-&xh;
-&zh;
-&zh_cn;
-&zh_tw;
+<l:l10n language="af" href="af.xml"/>
+<l:l10n language="am" href="am.xml"/>
+<l:l10n language="ar" href="ar.xml"/>
+<l:l10n language="as" href="as.xml"/>
+<l:l10n language="ast" href="ast.xml"/>
+<l:l10n language="az" href="az.xml"/>
+<l:l10n language="bg" href="bg.xml"/>
+<l:l10n language="bn" href="bn.xml"/>
+<l:l10n language="bn_in" href="bn_in.xml"/>
+<l:l10n language="bs" href="bs.xml"/>
+<l:l10n language="ca" href="ca.xml"/>
+<l:l10n language="cs" href="cs.xml"/>
+<l:l10n language="cy" href="cy.xml"/>
+<l:l10n language="da" href="da.xml"/>
+<l:l10n language="de" href="de.xml"/>
+<l:l10n language="el" href="el.xml"/>
+<l:l10n language="en" href="en.xml"/>
+<l:l10n language="eo" href="eo.xml"/>
+<l:l10n language="es" href="es.xml"/>
+<l:l10n language="et" href="et.xml"/>
+<l:l10n language="eu" href="eu.xml"/>
+<l:l10n language="fa" href="fa.xml"/>
+<l:l10n language="fi" href="fi.xml"/>
+<l:l10n language="fr" href="fr.xml"/>
+<l:l10n language="ga" href="ga.xml"/>
+<l:l10n language="gl" href="gl.xml"/>
+<l:l10n language="gu" href="gu.xml"/>
+<l:l10n language="he" href="he.xml"/>
+<l:l10n language="hi" href="hi.xml"/>
+<l:l10n language="hr" href="hr.xml"/>
+<l:l10n language="hu" href="hu.xml"/>
+<l:l10n language="id" href="id.xml"/>
+<l:l10n language="is" href="is.xml"/>
+<l:l10n language="it" href="it.xml"/>
+<l:l10n language="ja" href="ja.xml"/>
+<l:l10n language="ka" href="ka.xml"/>
+<l:l10n language="kn" href="kn.xml"/>
+<l:l10n language="ko" href="ko.xml"/>
+<l:l10n language="ky" href="ky.xml"/>
+<l:l10n language="la" href="la.xml"/>
+<l:l10n language="lt" href="lt.xml"/>
+<l:l10n language="lv" href="lv.xml"/>
+<l:l10n language="ml" href="ml.xml"/>
+<l:l10n language="mn" href="mn.xml"/>
+<l:l10n language="mr" href="mr.xml"/>
+<l:l10n language="nb" href="nb.xml"/>
+<l:l10n language="nds" href="nds.xml"/>
+<l:l10n language="nl" href="nl.xml"/>
+<l:l10n language="nn" href="nn.xml"/>
+<l:l10n language="or" href="or.xml"/>
+<l:l10n language="pa" href="pa.xml"/>
+<l:l10n language="pl" href="pl.xml"/>
+<l:l10n language="pt" href="pt.xml"/>
+<l:l10n language="pt_br" href="pt_br.xml"/>
+<l:l10n language="ro" href="ro.xml"/>
+<l:l10n language="ru" href="ru.xml"/>
+<l:l10n language="sk" href="sk.xml"/>
+<l:l10n language="sl" href="sl.xml"/>
+<l:l10n language="sq" href="sq.xml"/>
+<l:l10n language="sr" href="sr.xml"/>
+<l:l10n language="sr_latn" href="sr_Latn.xml"/>
+<l:l10n language="sv" href="sv.xml"/>
+<l:l10n language="ta" href="ta.xml"/>
+<l:l10n language="te" href="te.xml"/>
+<l:l10n language="th" href="th.xml"/>
+<l:l10n language="tl" href="tl.xml"/>
+<l:l10n language="tr" href="tr.xml"/>
+<l:l10n language="uk" href="uk.xml"/>
+<l:l10n language="vi" href="vi.xml"/>
+<l:l10n language="xh" href="xh.xml"/>
+<l:l10n language="zh" href="zh.xml"/>
+<l:l10n language="zh_cn" href="zh_cn.xml"/>
+<l:l10n language="zh_tw" href="zh_tw.xml"/>
 </l:i18n>
Index: common/entities.ent
===================================================================
--- common/entities.ent	(Revision 8504)
+++ common/entities.ent	(Revision 8900)
@@ -16,10 +16,17 @@
 <!ENTITY lowercase "'Aa&#192;&#224;&#193;&#225;&#194;&#226;&#195;&#227;&#196;&#228;&#197;&#229;&#256;&#257;&#258;&#259;&#260;&#261;&#461;&#462;&#478;&#479;&#480;&#481;&#506;&#507;&#512;&#513;&#514;&#515;&#550;&#551;&#7680;&#7681;&#7834;&#7840;&#7841;&#7842;&#7843;&#7844;&#7845;&#7846;&#7847;&#7848;&#7849;&#7850;&#7851;&#7852;&#7853;&#7854;&#7855;&#7856;&#7857;&#7858;&#7859;&#7860;&#7861;&#7862;&#7863;Bb&#384;&#385;&#595;&#386;&#387;&#7682;&#7683;&#7684;&#7685;&#7686;&#7687;Cc&#199;&#231;&#262;&#263;&#264;&#265;&#266;&#267;&#268;&#269;&#391;&#392;&#597;&#7688;&#7689;Dd&#270;&#271;&#272;&#273;&#394;&#599;&#395;&#396;&#453;&#498;&#545;&#598;&#7690;&#7691;&#7692;&#7693;&#7694;&#7695;&#7696;&#7697;&#7698;&#7699;Ee&#200;&#232;&#201;&#233;&#202;&#234;&#203;&#235;&#274;&#275;&#276;&#277;&#278;&#279;&#280;&#281;&#282;&#283;&#516;&#517;&#518;&#519;&#552;&#553;&#7700;&#7701;&#7702;&#7703;&#7704;&#7705;&#7706;&#7707;&#7708;&#7709;&#7864;&#7865;&#7866;&#7867;&#7868;&#7869;&#7870;&#7871;&#7872;&#7873;&#7874;&#7875;&#7876;&#7877;&#7878;&#7879;Ff&#401;&#402;&#7710;&#7711;Gg&#284;&#285;&#286;&#287;&#288;&#289;&#290;&#291;&#403;&#608;&#484;&#485;&#486;&#487;&#500;&#501;&#7712;&#7713;Hh&#292;&#293;&#294;&#295;&#542;&#543;&#614;&#7714;&#7715;&#7716;&#7717;&#7718;&#7719;&#7720;&#7721;&#7722;&#7723;&#7830;Ii&#204;&#236;&#205;&#237;&#206;&#238;&#207;&#239;&#296;&#297;&#298;&#299;&#300;&#301;&#302;&#303;&#304;&#407;&#616;&#463;&#464;&#520;&#521;&#522;&#523;&#7724;&#7725;&#7726;&#7727;&#7880;&#7881;&#7882;&#7883;Jj&#308;&#309;&#496;&#669;Kk&#310;&#311;&#408;&#409;&#488;&#489;&#7728;&#7729;&#7730;&#7731;&#7732;&#7733;Ll&#313;&#314;&#315;&#316;&#317;&#318;&#319;&#320;&#321;&#322;&#410;&#456;&#564;&#619;&#620;&#621;&#7734;&#7735;&#7736;&#7737;&#7738;&#7739;&#7740;&#7741;Mm&#625;&#7742;&#7743;&#7744;&#7745;&#7746;&#7747;Nn&#209;&#241;&#323;&#324;&#325;&#326;&#327;&#328;&#413;&#626;&#414;&#544;&#459;&#504;&#505;&#565;&#627;&#7748;&#7749;&#7750;&#7751;&#7752;&#7753;&#7754;&#7755;Oo&#210;&#242;&#211;&#243;&#212;&#244;&#213;&#245;&#214;&#246;&#216;&#248;&#332;&#333;&#334;&#335;&#336;&#337;&#415;&#416;&#417;&#465;&#466;&#490;&#491;&#492;&#493;&#510;&#511;&#524;&#525;&#526;&#527;&#554;&#555;&#556;&#557;&#558;&#559;&#560;&#561;&#7756;&#7757;&#7758;&#7759;&#7760;&#7761;&#7762;&#7763;&#7884;&#7885;&#7886;&#7887;&#7888;&#7889;&#7890;&#7891;&#7892;&#7893;&#7894;&#7895;&#7896;&#7897;&#7898;&#7899;&#7900;&#7901;&#7902;&#7903;&#7904;&#7905;&#7906;&#7907;Pp&#420;&#421;&#7764;&#7765;&#7766;&#7767;Qq&#672;Rr&#340;&#341;&#342;&#343;&#344;&#345;&#528;&#529;&#530;&#531;&#636;&#637;&#638;&#7768;&#7769;&#7770;&#7771;&#7772;&#7773;&#7774;&#7775;Ss&#346;&#347;&#348;&#349;&#350;&#351;&#352;&#353;&#536;&#537;&#642;&#7776;&#7777;&#7778;&#7779;&#7780;&#7781;&#7782;&#7783;&#7784;&#7785;Tt&#354;&#355;&#356;&#357;&#358;&#359;&#427;&#428;&#429;&#430;&#648;&#538;&#539;&#566;&#7786;&#7787;&#7788;&#7789;&#7790;&#7791;&#7792;&#7793;&#7831;Uu&#217;&#249;&#218;&#250;&#219;&#251;&#220;&#252;&#360;&#361;&#362;&#363;&#364;&#365;&#366;&#367;&#368;&#369;&#370;&#371;&#431;&#432;&#467;&#468;&#469;&#470;&#471;&#472;&#473;&#474;&#475;&#476;&#532;&#533;&#534;&#535;&#7794;&#7795;&#7796;&#7797;&#7798;&#7799;&#7800;&#7801;&#7802;&#7803;&#7908;&#7909;&#7910;&#7911;&#7912;&#7913;&#7914;&#7915;&#7916;&#7917;&#7918;&#7919;&#7920;&#7921;Vv&#434;&#651;&#7804;&#7805;&#7806;&#7807;Ww&#372;&#373;&#7808;&#7809;&#7810;&#7811;&#7812;&#7813;&#7814;&#7815;&#7816;&#7817;&#7832;Xx&#7818;&#7819;&#7820;&#7821;Yy&#221;&#253;&#255;&#376;&#374;&#375;&#435;&#436;&#562;&#563;&#7822;&#7823;&#7833;&#7922;&#7923;&#7924;&#7925;&#7926;&#7927;&#7928;&#7929;Zz&#377;&#378;&#379;&#380;&#381;&#382;&#437;&#438;&#548;&#549;&#656;&#657;&#7824;&#7825;&#7826;&#7827;&#7828;&#7829;&#7829;'">
 <!ENTITY uppercase "'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPPPPPQQQRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVWWWWWWWWWWWWWWWXXXXXXYYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZZZZZZZZZZ'">
 
-<!ENTITY primary   'normalize-space(concat(primary/@sortas, primary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, secondary[not(@sortas) or @sortas = ""]))'>
-<!ENTITY tertiary  'normalize-space(concat(tertiary/@sortas, tertiary[not(@sortas) or @sortas = ""]))'>
-
+<!-- The following three entities are used for sorting and grouping
+     indexterms, not in presentation of them. -->
+<!-- If @sortas is present, sort and group by combination of
+     @sortas, space and entry to keep it separate from other entries
+     with the same @sortas.
+     If @sortas is not present, the first item is empty, and the added space
+     is removed when normalize-space is applied, leaving just the entry -->
+
+<!ENTITY primary   'normalize-space(concat(primary/@sortas, " ", primary))'>
+<!ENTITY secondary 'normalize-space(concat(secondary/@sortas, " ", secondary))'>
+<!ENTITY tertiary  'normalize-space(concat(tertiary/@sortas, " ", tertiary))'>
 
 <!ENTITY section   '(ancestor-or-self::set|ancestor-or-self::book|ancestor-or-self::part|ancestor-or-self::reference|ancestor-or-self::partintro|ancestor-or-self::chapter|ancestor-or-self::appendix|ancestor-or-self::preface|ancestor-or-self::article|ancestor-or-self::section|ancestor-or-self::sect1|ancestor-or-self::sect2|ancestor-or-self::sect3|ancestor-or-self::sect4|ancestor-or-self::sect5|ancestor-or-self::refentry|ancestor-or-self::refsect1|ancestor-or-self::refsect2|ancestor-or-self::refsect3|ancestor-or-self::simplesect|ancestor-or-self::bibliography|ancestor-or-self::glossary|ancestor-or-self::index|ancestor-or-self::webpage)[last()]'>
 
@@ -57,4 +64,4 @@
                                 parent::refsynopsisdiv|parent::sect1|parent::sect2|parent::sect3|parent::sect4|
                                 parent::sect5|parent::section|parent::setindex|parent::sidebar|
                                 parent::simplesect|parent::taskprerequisites|parent::taskrelated|
-                                parent::tasksummary|parent::warning">
\ Kein Zeilenumbruch am Dateiende.
+                                parent::tasksummary|parent::warning">
Index: common/titles.xsl
===================================================================
--- common/titles.xsl	(Revision 8504)
+++ common/titles.xsl	(Revision 8900)
@@ -1,6 +1,7 @@
 <?xml version='1.0'?>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 xmlns:doc="http://nwalsh.com/xsl/documentation/1.0";
+                xmlns:xlink="http://www.w3.org/1999/xlink";
                 exclude-result-prefixes="doc"
                 version='1.0'>
 
@@ -719,7 +720,7 @@ title of the element. This does not incl
 </xsl:template>
 
 <xsl:template match="xref" mode="no.anchor.mode">
-  <xsl:variable name="targets" select="key('id',@linkend)"/>
+  <xsl:variable name="targets" select="key('id',@linkend)|key('id',substring-after(@xlink:href,'#'))"/>
   <xsl:variable name="target" select="$targets[1]"/>
   <xsl:variable name="refelem" select="local-name($target)"/>
   
@@ -731,7 +732,8 @@ title of the element. This does not incl
     <xsl:when test="count($target) = 0">
       <xsl:message>
         <xsl:text>XRef to nonexistent id: </xsl:text>
-        <xsl:value-of select="@linkend"/>
+        <xsl:value-of select="@linkend"/> 
+        <xsl:value-of select="@xlink:href"/>
       </xsl:message>
       <xsl:text>???</xsl:text>
     </xsl:when>
Index: common/pi.xsl
===================================================================
--- common/pi.xsl	(Revision 8504)
+++ common/pi.xsl	(Revision 8900)
@@ -188,6 +188,11 @@
       child of a <tag>textobject</tag> containing embedded TeX
       markup, to cause that markup to be surrounded by
       <literal>$</literal> delimiter characters in output.</para>
+      <warning>
+       <para>This feature is useful for print/PDF output only if you
+       use the obsolete and now unsupported PassiveTeX XSL-FO
+       engine.</para>
+      </warning>
   </refdescription>
   <refsynopsisdiv>
     <synopsis><tag class="xmlpi">dbtex delims="no"|"yes"</tag></synopsis>
@@ -201,14 +206,11 @@
       </varlistentry>
     </variablelist>
   </refparameter>
+
   <refsee role="params">
     <para><parameter>tex.math.delims</parameter></para>
   </refsee>
-  <refsee role="tcg">
-    <para><link role="tcg"
-        xlink:href="TexMath.html"
-        >DBTeXMath</link></para>
-  </refsee>
+ 
 </doc:pi>
 <xsl:template name="pi.dbtex_delims">
   <xsl:param name="node" select="."/>
Index: common/Makefile
===================================================================
--- common/Makefile	(Revision 8504)
+++ common/Makefile	(Revision 8900)
@@ -1,15 +1,13 @@
 include $(DOCBOOK_SVN)/buildtools/Makefile.incl
 
-XJPARSEFLAGS= -E 0 -w
-
-SOURCES=af.xml am.xml ar.xml az.xml bg.xml bn.xml bs.xml ca.xml cs.xml \
-	cy.xml da.xml de.xml el.xml en.xml eo.xml es.xml et.xml eu.xml \
-	fa.xml fi.xml fr.xml ga.xml gl.xml gu.xml hi.xml he.xml hu.xml \
-	id.xml it.xml ja.xml kn.xml ko.xml ky.xml la.xml lt.xml lv.xml \
-	mn.xml nl.xml nn.xml nb.xml pa.xml pl.xml hr.xml la.xml or.xml \
-	pt.xml pt_br.xml ro.xml ru.xml sk.xml sl.xml sq.xml sr.xml \
-	sr_Latn.xml sv.xml ta.xml th.xml tl.xml tr.xml uk.xml vi.xml \
-	xh.xml zh.xml zh_cn.xml zh_tw.xml
+SOURCES=af.xml am.xml ar.xml as.xml ast.xml az.xml bg.xml bn.xml bn_in.xml bs.xml \
+	ca.xml cs.xml cy.xml da.xml de.xml el.xml en.xml eo.xml es.xml et.xml \
+	fa.xml fi.xml fr.xml ga.xml gu.xml he.xml hi.xml hr.xml hu.xml id.xml \
+	is.xml it.xml ja.xml ka.xml kn.xml ko.xml ky.xml la.xml lt.xml lv.xml \
+	ml.xml mn.xml mr.xml nb.xml nds.xml nl.xml nn.xml or.xml pa.xml pl.xml \
+	pt.xml pt_br.xml ro.xml ru.xml sk.xml sl.xml sq.xml sr.xml sr_Latn.xml sv.xml \
+	ta.xml te.xml th.xml tl.xml tr.xml uk.xml vi.xml xh.xml zh.xml zh_cn.xml \
+	zh_tw.xml
 
 GENSTYLE=$(DOCBOOK_SVN)/gentext/xsl/xsl.xsl $(DOCBOOK_SVN)/gentext/locale/en.xml
 
@@ -18,9 +16,12 @@ all: $(SOURCES)
 af.xml: $(DOCBOOK_SVN)/gentext/locale/af.xml $(GENSTYLE)
 am.xml: $(DOCBOOK_SVN)/gentext/locale/am.xml $(GENSTYLE)
 ar.xml: $(DOCBOOK_SVN)/gentext/locale/ar.xml $(GENSTYLE)
+as.xml: $(DOCBOOK_SVN)/gentext/locale/as.xml $(GENSTYLE)
+ast.xml: $(DOCBOOK_SVN)/gentext/locale/ast.xml $(GENSTYLE)
 az.xml: $(DOCBOOK_SVN)/gentext/locale/az.xml $(GENSTYLE)
 bg.xml: $(DOCBOOK_SVN)/gentext/locale/bg.xml $(GENSTYLE)
 bn.xml: $(DOCBOOK_SVN)/gentext/locale/bn.xml $(GENSTYLE)
+bn_in.xml: $(DOCBOOK_SVN)/gentext/locale/bn_in.xml $(GENSTYLE)
 bs.xml: $(DOCBOOK_SVN)/gentext/locale/bs.xml $(GENSTYLE)
 ca.xml: $(DOCBOOK_SVN)/gentext/locale/ca.xml $(GENSTYLE)
 cs.xml: $(DOCBOOK_SVN)/gentext/locale/cs.xml $(GENSTYLE)
@@ -44,18 +45,23 @@ hi.xml: $(DOCBOOK_SVN)/gentext/locale/hi
 hr.xml: $(DOCBOOK_SVN)/gentext/locale/hr.xml $(GENSTYLE)
 hu.xml: $(DOCBOOK_SVN)/gentext/locale/hu.xml $(GENSTYLE)
 id.xml: $(DOCBOOK_SVN)/gentext/locale/id.xml $(GENSTYLE)
+is.xml: $(DOCBOOK_SVN)/gentext/locale/is.xml $(GENSTYLE)
 it.xml: $(DOCBOOK_SVN)/gentext/locale/it.xml $(GENSTYLE)
 ja.xml: $(DOCBOOK_SVN)/gentext/locale/ja.xml $(GENSTYLE)
+ka.xml: $(DOCBOOK_SVN)/gentext/locale/ka.xml $(GENSTYLE)
 kn.xml: $(DOCBOOK_SVN)/gentext/locale/kn.xml $(GENSTYLE)
 ko.xml: $(DOCBOOK_SVN)/gentext/locale/ko.xml $(GENSTYLE)
 ky.xml: $(DOCBOOK_SVN)/gentext/locale/ky.xml $(GENSTYLE)
 la.xml: $(DOCBOOK_SVN)/gentext/locale/la.xml $(GENSTYLE)
 lt.xml: $(DOCBOOK_SVN)/gentext/locale/lt.xml $(GENSTYLE)
 lv.xml: $(DOCBOOK_SVN)/gentext/locale/lv.xml $(GENSTYLE)
+ml.xml: $(DOCBOOK_SVN)/gentext/locale/ml.xml $(GENSTYLE)
 mn.xml: $(DOCBOOK_SVN)/gentext/locale/mn.xml $(GENSTYLE)
+mr.xml: $(DOCBOOK_SVN)/gentext/locale/mr.xml $(GENSTYLE)
+nb.xml: $(DOCBOOK_SVN)/gentext/locale/nb.xml $(GENSTYLE)
+nds.xml: $(DOCBOOK_SVN)/gentext/locale/nds.xml $(GENSTYLE)
 nl.xml: $(DOCBOOK_SVN)/gentext/locale/nl.xml $(GENSTYLE)
 nn.xml: $(DOCBOOK_SVN)/gentext/locale/nn.xml $(GENSTYLE)
-nb.xml: $(DOCBOOK_SVN)/gentext/locale/nb.xml $(GENSTYLE)
 or.xml: $(DOCBOOK_SVN)/gentext/locale/or.xml $(GENSTYLE)
 pa.xml: $(DOCBOOK_SVN)/gentext/locale/pa.xml $(GENSTYLE)
 pl.xml: $(DOCBOOK_SVN)/gentext/locale/pl.xml $(GENSTYLE)
@@ -70,8 +76,9 @@ sr.xml: $(DOCBOOK_SVN)/gentext/locale/sr
 sr_Latn.xml: $(DOCBOOK_SVN)/gentext/locale/sr_Latn.xml $(GENSTYLE)
 sv.xml: $(DOCBOOK_SVN)/gentext/locale/sv.xml $(GENSTYLE)
 ta.xml: $(DOCBOOK_SVN)/gentext/locale/ta.xml $(GENSTYLE)
-tl.xml: $(DOCBOOK_SVN)/gentext/locale/tl.xml $(GENSTYLE)
+te.xml: $(DOCBOOK_SVN)/gentext/locale/te.xml $(GENSTYLE)
 th.xml: $(DOCBOOK_SVN)/gentext/locale/th.xml $(GENSTYLE)
+tl.xml: $(DOCBOOK_SVN)/gentext/locale/tl.xml $(GENSTYLE)
 tr.xml: $(DOCBOOK_SVN)/gentext/locale/tr.xml $(GENSTYLE)
 uk.xml: $(DOCBOOK_SVN)/gentext/locale/uk.xml $(GENSTYLE)
 vi.xml: $(DOCBOOK_SVN)/gentext/locale/vi.xml $(GENSTYLE)

Eigenschaftsänderungen: common
___________________________________________________________________
Geändert: svn:ignore
   - af.xml
am.xml
ar.xml
az.xml
bg.xml
bn.xml
bs.xml
ca.xml
cs.xml
cy.xml
da.xml
de.xml
el.xml
en.xml
eo.xml
es.xml
et.xml
eu.xml
fa.xml
fi.xml
fr.xml
ga.xml
gl.xml
gu.xml
he.xml
hi.xml
hr.xml
hu.xml
id.xml
it.xml
ja.xml
kn.xml
ko.xml
ky.xml
la.xml
lt.xml
lv.xml
mn.xml
nl.xml
nn.xml
nb.xml
or.xml
pa.xml
pl.xml
pt.xml
pt_br.xml
ro.xml
ru.xml
sk.xml
sl.xml
sq.xml
sr.xml
sr_Latn.xml
sv.xml
ta.xml
th.xml
tl.xml
tr.xml
uk.xml
vi.xml
xh.xml
zh.xml
zh_cn.xml
zh_tw.xml
pi.xml
common.xml
refentry.xml
utility.xml
charmap.xml

   + af.xml
am.xml
ar.xml
as.xml
ast.xml
az.xml
bg.xml
bn.xml
bn_in.xml
bs.xml
ca.xml
cs.xml
cy.xml
da.xml
de.xml
el.xml
en.xml
eo.xml
es.xml
et.xml
eu.xml
fa.xml
fi.xml
fr.xml
ga.xml
gl.xml
gu.xml
he.xml
hi.xml
hr.xml
hu.xml
id.xml
is.xml
it.xml
ja.xml
ka.xml
kn.xml
ko.xml
ky.xml
la.xml
lt.xml
lv.xml
ml.xml
mn.xml
mr.xml
nds.xml
nl.xml
nn.xml
nb.xml
or.xml
pa.xml
pl.xml
pt.xml
pt_br.xml
ro.xml
ru.xml
sk.xml
sl.xml
sq.xml
sr.xml
sr_Latn.xml
sv.xml
ta.xml
te.xml
th.xml
tl.xml
tr.xml
uk.xml
vi.xml
xh.xml
zh.xml
zh_cn.xml
zh_tw.xml
pi.xml
common.xml
refentry.xml
utility.xml
charmap.xml


Index: README.BUILD
===================================================================
--- README.BUILD	(Revision 8504)
+++ README.BUILD	(Revision 8900)
@@ -46,7 +46,7 @@ contributions welcome...
 
    - xsltproc and xmllint
    - egrep and sed
-   - Perl and the XML::Path module
+   - Perl and the XML::XPath module
    - Java and Apache ant (for building the extension jar files)
 
    And if you want to build with Saxon instead of xsltproc:
@@ -134,9 +134,9 @@ contributions welcome...
      # set up some environment variables for DocBook/XML stuff
      . ~/docbk.sh
 
-4. ~/.xmlrc
+4. ~/.xmlc
 
-   You need an .xmlrc file with some system-specific data for Java
+   You need an .xmlc file with some system-specific data for Java
    and XML tools in your environment. For example:
 
    <?xml version='1.0' encoding='utf-8'?> <!-- -*- nxml -*- -->
@@ -548,9 +548,53 @@ release.
 * NOTE: The part of the build that installs releases at the
 * Sourceforge project site is currently NOT working (due to SF
 * disabling non-interactive ssh access).
-*
-* Try 
-*    scp [FILES] [username]@frs.sourceforge.net:uploads/
+
+-----------------------------------------------------------------
+Manual upload of release packages
+-----------------------------------------------------------------
+Below are instructions for manually uploading and installing 
+release packages in order to make them available at the project
+site (http://docbook.sourceforge.net/release/).
+
+1. Transfer the following files 
+
+   - docbook-xsl-<version>.zip
+   - docbook-xsl-ns-<version>.zip
+   - docbook-xsl-doc-<version>.zip 
+
+   to the /home/groups/d/do/docbook/htdocs/release/xsl 
+   directory at web.sourceforge.net using scp, WinSCP, or another 
+   equivalent tool. The login string is 
+
+     <username>,docbook@web.sourceforge.net
+
+2. Start a SourceForge shell session, like so:
+
+     ssh -t <username>,docbook@shell.sourceforge.net create
+
+3. In the shell, execute commands as follows for the docbook-xsl 
+   package (the 1.75.2 version is used as an example):
+
+     cd /home/groups/d/do/docbook/htdocs/release/xsl
+     rm -rf current
+     unzip docbook-xsl-1.75.2.zip
+     mv docbook-xsl-1.75.2 1.75.2
+     chmod -R g+w 1.75.2
+     ln -s 1.75.2 current
+
+4. Repeat (and modify where applicable) the commands in step 3 for 
+   the docbook-xsl-ns package.
+
+5. Extract the contents of the docbook-xsl-doc package into the 
+   xsl/<version> and xsl-ns/<version> directories. 
+
+6. Delete ZIP files and temporary directories.
+
+For more information about file management and shell services at 
+SourceForge, see
+
+     https://sourceforge.net/apps/trac/sourceforge/wiki/WikiStart
+
 *****************************************************************
 
      make install-ns
Index: epub/docbook.xsl
===================================================================
--- epub/docbook.xsl	(Revision 8504)
+++ epub/docbook.xsl	(Revision 8900)
@@ -8,11 +8,12 @@
   xmlns:ng="http://docbook.org/docbook-ng";
   xmlns:opf="http://www.idpf.org/2007/opf";
   xmlns:stext="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.TextFactory";
+  xmlns:str="http://exslt.org/strings";
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   xmlns:xtext="xalan://com.nwalsh.xalan.Text"
 
   extension-element-prefixes="stext xtext"
-  exclude-result-prefixes="exsl db dc h ncx ng opf stext xtext"
+  exclude-result-prefixes="exsl db dc h ncx ng opf stext str xtext"
 
   version="1.0">
 
@@ -48,13 +49,18 @@
   <xsl:param name="epub.html.toc.id">htmltoc</xsl:param>
   <xsl:param name="epub.metainf.dir" select="'META-INF/'"/> 
 
-  <xsl:param name="epub.embedded.font"></xsl:param>
+  <xsl:param name="epub.embedded.fonts"></xsl:param>
+
+  <!-- Turning this on crashes ADE, which is unbelievably awesome -->
+  <xsl:param name="formal.object.break.after">0</xsl:param>
+
 
   <!-- Per Bob Stayton:
        """Process your documents with the css.decoration parameter set to zero. 
           That will avoid the use of style attributes in XHTML elements where they are not permitted."""
        http://www.sagehill.net/docbookxsl/OtherOutputForms.html#StrictXhtmlValid -->
   <xsl:param name="css.decoration" select="0"/>
+  <xsl:param name="custom.css.source"></xsl:param> <!-- FIXME: Align with current CSS parameter design -->
 
   <xsl:param name="callout.graphics" select="1"/>
   <xsl:param name="callout.graphics.extension">.png</xsl:param>
@@ -391,7 +397,7 @@
       <xsl:with-param name="doctype-public" select="''"/> <!-- intentionally blank -->
       <xsl:with-param name="doctype-system" select="''"/> <!-- intentionally blank -->
       <xsl:with-param name="content">
-        <xsl:element name="ncx:ncx">
+        <xsl:element name="ncx" namespace="http://www.daisy.org/z3986/2005/ncx/";>
           <xsl:attribute name="version">2005-1</xsl:attribute>
 
             <!-- Via Martin Goerner: On covers: the IDPF2.0 standard unfortunately does not have a provision for
@@ -403,9 +409,9 @@
             if the HTML cover item is marked linear="no" AND there is a guide item of
             type="cover" pointing to it AND there is a logical cover specified in a
             <meta name="cover"> tag, THEN, the HTML cover is discarded. -->
-          <xsl:element name="ncx:head">
+          <xsl:element name="head" namespace="http://www.daisy.org/z3986/2005/ncx/";>
             <xsl:if test="/*/*[cover or contains(name(.), 'info')]//mediaobject[@role='cover' or ancestor::cover]"> 
-              <xsl:element name="ncx:meta">
+              <xsl:element name="meta" namespace="http://www.daisy.org/z3986/2005/ncx/";>
                 <xsl:attribute name="name">cover</xsl:attribute>
                 <xsl:attribute name="content">
                   <xsl:value-of select="$epub.cover.id"/>
@@ -413,7 +419,7 @@
               </xsl:element>
             </xsl:if>
             <xsl:if test="/*/*[contains(name(.), 'info')]/isbn"> 
-              <xsl:element name="ncx:meta">
+              <xsl:element name="meta" namespace="http://www.daisy.org/z3986/2005/ncx/";>
                 <xsl:attribute name="name">dtb:uid</xsl:attribute>
                 <xsl:attribute name="content">
                   <xsl:text>isbn:</xsl:text>
@@ -424,15 +430,15 @@
             <!-- TODO: be nice to have a name="cover" here for .mobi-->
 
             <!-- TODO What are these hardcoded values? -->
-            <xsl:element name="ncx:meta">
+            <xsl:element name="meta" namespace="http://www.daisy.org/z3986/2005/ncx/";>
               <xsl:attribute name="name">dtb:depth</xsl:attribute>
               <xsl:attribute name="content">-1</xsl:attribute>
             </xsl:element>
-            <xsl:element name="ncx:meta">
+            <xsl:element name="meta" namespace="http://www.daisy.org/z3986/2005/ncx/";>
               <xsl:attribute name="name">dtb:totalPageCount</xsl:attribute>
               <xsl:attribute name="content">0</xsl:attribute>
             </xsl:element>
-            <xsl:element name="ncx:meta">
+            <xsl:element name="meta" namespace="http://www.daisy.org/z3986/2005/ncx/";>
               <xsl:attribute name="name">dtb:maxPageNumber</xsl:attribute>
               <xsl:attribute name="content">0</xsl:attribute>
             </xsl:element>
@@ -455,10 +461,10 @@
                   <xsl:with-param name="object" select="key('id',$rootid)" />
                 </xsl:call-template>
               </xsl:variable>
-              <xsl:element name="ncx:docTitle">
-                <xsl:element name="ncx:text"><xsl:value-of select="normalize-space($title)" />  </xsl:element>
+              <xsl:element name="docTitle" namespace="http://www.daisy.org/z3986/2005/ncx/";>
+                <xsl:element name="text" namespace="http://www.daisy.org/z3986/2005/ncx/";><xsl:value-of select="normalize-space($title)" />  </xsl:element>
               </xsl:element>
-              <xsl:element name="ncx:navMap">
+              <xsl:element name="navMap" namespace="http://www.daisy.org/z3986/2005/ncx/";>
                 <xsl:apply-templates select="key('id',$rootid)/*" mode="ncx" />
               </xsl:element>
             </xsl:when>
@@ -479,12 +485,12 @@
                   <xsl:with-param name="object" select="/" />
                 </xsl:call-template>
               </xsl:variable>
-              <xsl:element name="ncx:docTitle">
-                <xsl:element name="ncx:text">
+              <xsl:element name="docTitle" namespace="http://www.daisy.org/z3986/2005/ncx/";>
+                <xsl:element name="text" namespace="http://www.daisy.org/z3986/2005/ncx/";>
                   <xsl:value-of select="normalize-space($title)" />
                 </xsl:element>
               </xsl:element>
-              <xsl:element name="ncx:navMap">
+              <xsl:element name="navMap" namespace="http://www.daisy.org/z3986/2005/ncx/";>
                 <xsl:choose>
                   <xsl:when test="$root.is.a.chunk != '0'">
                     <xsl:apply-templates select="/*" mode="ncx" />
@@ -560,17 +566,17 @@
                                   preceding::glossary|
                                   preceding::section[not(parent::partintro)]|
                                   preceding::sect1[not(parent::partintro)]|
-                                  preceding::sect2|
-                                  preceding::sect3|
-                                  preceding::sect4|
-                                  preceding::sect5|
+                                  preceding::sect2[not(ancestor::partintro)]|
+                                  preceding::sect3[not(ancestor::partintro)]|
+                                  preceding::sect4[not(ancestor::partintro)]|
+                                  preceding::sect5[not(ancestor::partintro)]|
                                   preceding::refentry|
                                   preceding::colophon|
                                   preceding::bibliodiv[title]|
                                   preceding::index)"/>
     </xsl:variable>
 
-    <xsl:element name="ncx:navPoint">
+    <xsl:element name="navPoint" namespace="http://www.daisy.org/z3986/2005/ncx/";>
       <xsl:attribute name="id">
         <xsl:value-of select="$id"/>
       </xsl:attribute>
@@ -588,10 +594,10 @@
           </xsl:otherwise>
         </xsl:choose>
       </xsl:attribute>
-      <xsl:element name="ncx:navLabel">
-        <xsl:element name="ncx:text"><xsl:value-of select="normalize-space($title)"/> </xsl:element>
+      <xsl:element name="navLabel" namespace="http://www.daisy.org/z3986/2005/ncx/";>
+        <xsl:element name="text" namespace="http://www.daisy.org/z3986/2005/ncx/";><xsl:value-of select="normalize-space($title)"/> </xsl:element>
       </xsl:element>
-      <xsl:element name="ncx:content">
+      <xsl:element name="content" namespace="http://www.daisy.org/z3986/2005/ncx/";>
         <xsl:attribute name="src">
           <xsl:value-of select="$href"/>
         </xsl:attribute>
@@ -605,6 +611,10 @@
     <!-- override if you care -->
   </xsl:template>
 
+  <xsl:template match="authorgroup" mode="opf.metadata">
+    <xsl:apply-templates select="author|corpauthor" mode="opf.metadata"/>
+  </xsl:template>
+
   <xsl:template match="author|corpauthor" mode="opf.metadata">
     <xsl:variable name="n">
       <xsl:call-template name="person.name">
@@ -682,7 +692,11 @@
     </xsl:variable>
     <xsl:if test="not(../date)">
       <xsl:element name="dc:date">
-        <xsl:value-of select="$copyright.date"/>
+        <xsl:call-template name="copyright.years">
+          <xsl:with-param name="years" select="year[last()]"/>
+          <xsl:with-param name="print.ranges" select="0"/>
+          <xsl:with-param name="single.year.ranges" select="0"/>
+        </xsl:call-template>
       </xsl:element>
     </xsl:if>
     <xsl:element name="dc:rights">
@@ -784,7 +798,7 @@
           <xsl:value-of select="generate-id(.)"/>
         </xsl:attribute>
       </xsl:element>
-      <xsl:apply-templates select="*" mode="opf.spine"/>
+      <xsl:apply-templates select="*|.//refentry" mode="opf.spine"/>
     </xsl:if>
   </xsl:template>
 
@@ -826,24 +840,22 @@
         </xsl:element>
       </xsl:if>  
 
-     <xsl:if test="$epub.embedded.font != ''">
-        <xsl:element namespace="http://www.idpf.org/2007/opf"; name="item">
-          <xsl:attribute name="id">epub.embedded.font</xsl:attribute>
-          <xsl:attribute name="href"><xsl:value-of select="$epub.embedded.font"/></xsl:attribute>
-          <xsl:choose>
-            <xsl:when test="contains($epub.embedded.font, 'otf')">
-              <xsl:attribute name="media-type">font/opentype</xsl:attribute>
-            </xsl:when>
-            <xsl:otherwise>
-              <xsl:message>
-                <xsl:text>WARNING: OpenType fonts should be supplied! (</xsl:text>
-                <xsl:value-of select="$epub.embedded.font"/>
-                <xsl:text>)</xsl:text>
-              </xsl:message>
-            </xsl:otherwise>  
-            </xsl:choose>
-        </xsl:element>
-     </xsl:if>
+      <xsl:choose>
+        <xsl:when test="$epub.embedded.fonts != '' and not(contains($epub.embedded.fonts, ','))">
+          <xsl:call-template name="embedded-font-item">
+            <xsl:with-param name="font.file" select="$epub.embedded.fonts"/> <!-- There is just one -->
+          </xsl:call-template>
+        </xsl:when>
+        <xsl:when test="$epub.embedded.fonts != ''">
+          <xsl:variable name="font.file.tokens" select="str:tokenize($epub.embedded.fonts, ',')"/>
+          <xsl:for-each select="exsl:node-set($font.file.tokens)">
+            <xsl:call-template name="embedded-font-item">
+              <xsl:with-param name="font.file" select="."/>
+              <xsl:with-param name="font.order" select="position()"/>
+            </xsl:call-template>
+          </xsl:for-each>
+        </xsl:when>
+      </xsl:choose>
 
       <!-- TODO: be nice to have a id="titlepage" here -->
       <xsl:apply-templates select="//part|
@@ -958,21 +970,48 @@
                        mediaobjectco|
                        inlinemediaobject" 
                 mode="opf.manifest">
+
+    <xsl:variable name="olist" select="imageobject|imageobjectco                      |videoobject|audioobject                      |textobject"/>
+
+    <xsl:variable name="object.index">
+      <xsl:call-template name="select.mediaobject.index">
+        <xsl:with-param name="olist" select="$olist"/>
+        <xsl:with-param name="count" select="1"/>
+      </xsl:call-template>
+    </xsl:variable>
+
+    <xsl:variable name="object" select="$olist[position() = $object.index]"/>
+
+    <xsl:choose>
+      <xsl:when test="$object/descendant::imagedata[@format = 'GIF' or 
+                                                    @format = 'GIF87a' or 
+                                                    @format = 'GIF89a' or 
+                                                    @format = 'JPEG' or 
+                                                    @format = 'JPG' or 
+                                                    @format = 'PNG' or 
+                                                    @format = 'SVG']">
+        <xsl:apply-templates select="$object[descendant::imagedata[@format = 'GIF' or 
+                                                                   @format = 'GIF87a' or 
+                                                                   @format = 'GIF89a' or 
+                                                                   @format = 'JPEG' or 
+                                                                   @format = 'JPG' or 
+                                                                   @format = 'PNG' or 
+                                                                   @format = 'SVG']][1]/imagedata"
+                             mode="opf.manifest"/>              
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-templates select="$object/imagedata[1]"
+                             mode="opf.manifest"/>              
+      </xsl:otherwise>
+    </xsl:choose>  
+  </xsl:template>
+
+  <xsl:template match="cover/mediaobject|
+                       mediaobject[@role='cover']"
+                mode="opf.manifest">
     <xsl:choose>
-      <xsl:when test="imageobject/imagedata[@format = 'GIF' or 
-                                            @format = 'GIF87a' or 
-                                            @format = 'GIF89a' or 
-                                            @format = 'JPEG' or 
-                                            @format = 'JPG' or 
-                                            @format = 'PNG' or 
-                                            @format = 'SVG']">
-        <xsl:apply-templates select="imageobject[imagedata[@format = 'GIF' or 
-                                                           @format = 'GIF87a' or 
-                                                           @format = 'GIF89a' or 
-                                                           @format = 'JPEG' or 
-                                                           @format = 'JPG' or 
-                                                           @format = 'PNG' or 
-                                                           @format = 'SVG']][1]/imagedata"
+      <xsl:when test="imageobject[@role='front-large']">
+        <xsl:apply-templates select="imageobject[@role='front-large']/imagedata"
                              mode="opf.manifest"/>              
       </xsl:when>
       <xsl:otherwise>
@@ -1029,7 +1068,13 @@
         <xsl:element namespace="http://www.idpf.org/2007/opf"; name="item">
           <xsl:attribute name="id"> 
             <xsl:choose>
-              <xsl:when test="(ancestor::mediaobject[@role='cover'] or ancestor::cover) and (../@role='front-large' or count(ancestor::mediaobject/descendant::imageobject) = 1)">
+              <xsl:when test="ancestor::mediaobject[@role='cover'] and parent::*[@role='front-large']">
+                <xsl:value-of select="$epub.cover.image.id"/>
+              </xsl:when>
+              <xsl:when test="ancestor::mediaobject[@role='cover'] and (count(ancestor::mediaobject//imageobject) = 1)">
+                <xsl:value-of select="$epub.cover.image.id"/>
+              </xsl:when>
+              <xsl:when test="ancestor::cover">
                 <xsl:value-of select="$epub.cover.image.id"/>
               </xsl:when>
               <xsl:otherwise>
@@ -1077,7 +1122,13 @@
       <xsl:element namespace="http://www.idpf.org/2007/opf"; name="item">
         <xsl:attribute name="id"> 
           <xsl:choose>
-            <xsl:when test="(ancestor::mediaobject[@role='cover'] or ancestor::cover) and (../@role='front-large' or count(ancestor::mediaobject/descendant::imageobject) = 1)">
+            <xsl:when test="ancestor::mediaobject[@role='cover'] and parent::*[@role='front-large']">
+              <xsl:value-of select="$epub.cover.image.id"/>
+            </xsl:when>
+            <xsl:when test="ancestor::mediaobject[@role='cover'] and (count(ancestor::mediaobject//imageobject) = 1)">
+              <xsl:value-of select="$epub.cover.image.id"/>
+            </xsl:when>
+            <xsl:when test="ancestor::cover">
               <xsl:value-of select="$epub.cover.image.id"/>
             </xsl:when>
             <xsl:otherwise>
@@ -1536,6 +1587,35 @@
   <xsl:template match="bibliodiv[title]" mode="label.markup">
   </xsl:template>
 
+  <xsl:template match="token" mode="opf.manifest.font">
+    <xsl:call-template name="embedded-font-item">
+      <xsl:with-param name="font.file" select="."/>
+    </xsl:call-template>
+  </xsl:template>
+
+  <xsl:template name="embedded-font-item">
+    <xsl:param name="font.file"/>
+    <xsl:param name="font.order" select="1"/>
+
+    <xsl:element namespace="http://www.idpf.org/2007/opf"; name="item">
+      <xsl:attribute name="id">
+        <xsl:value-of select="concat('epub.embedded.font.', $font.order)"/>
+      </xsl:attribute>
+      <xsl:attribute name="href"><xsl:value-of select="$font.file"/></xsl:attribute>
+      <xsl:choose>
+        <xsl:when test="contains($font.file, 'otf')">
+          <xsl:attribute name="media-type">font/opentype</xsl:attribute>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:message>
+            <xsl:text>WARNING: OpenType fonts should be supplied! (</xsl:text>
+            <xsl:value-of select="$font.file"/>
+            <xsl:text>)</xsl:text>
+          </xsl:message>
+        </xsl:otherwise>  
+      </xsl:choose>
+    </xsl:element>
+  </xsl:template>
 
 <!-- Change section.heading to improve SEO on generated HTML by doing heading levels 
      "correctly". SEO rules are sometimes silly silly, but this does actually create 
Index: epub/bin/lib/docbook.rb
===================================================================
--- epub/bin/lib/docbook.rb	(Revision 8504)
+++ epub/bin/lib/docbook.rb	(Revision 8900)
@@ -26,7 +26,6 @@ module DocBook
       @oebps_dir = File.join(@output_dir, OEBPS_DIR)
       @css_file = css_file ? File.expand_path(css_file) : css_file
       @embedded_fonts = embedded_fonts
-      raise NotImplementedError if @embedded_fonts.length > 1
       @to_delete = []
       
       if customization_layer
@@ -48,7 +47,7 @@ module DocBook
 
     def self.invalid?(file)
       # Obnoxiously, we can't just check for a non-zero output...
-      cmd = "#{CHECKER} #{file}"
+      cmd = %Q(#{CHECKER} "#{file}")
       output = `#{cmd} 2>&1`
 
       if $?.to_i == 0
@@ -70,7 +69,8 @@ module DocBook
       html_stylesheet = "--stringparam html.stylesheet #{File.basename(@css_file)}" if @css_file
       base =            "--stringparam base.dir #{OEBPS_DIR}/" 
       unless @embedded_fonts.empty? 
-        font =            "--stringparam epub.embedded.font \"#{File.basename(@embedded_fonts.first)}\"" 
+        embedded_fonts = @embedded_fonts.map {|f| File.basename(f)}.join(',')
+        font =            "--stringparam epub.embedded.fonts \"#{embedded_fonts}\"" 
       end  
       meta =            "--stringparam epub.metainf.dir #{META_DIR}/" 
       oebps =           "--stringparam epub.oebps.dir #{OEBPS_DIR}/" 
@@ -85,7 +85,7 @@ module DocBook
                  html_stylesheet,
                 ].join(" ")
       # Double-quote stylesheet & file to help Windows cmd.exe
-      db2epub_cmd = "cd #{@output_dir} && #{XSLT_PROCESSOR} #{options} \"#{@stylesheet}\" \"#{@collapsed_docbook_file}\""
+      db2epub_cmd = %Q(cd "#{@output_dir}" && #{XSLT_PROCESSOR} #{options} "#{@stylesheet}" "#{@collapsed_docbook_file}")
       STDERR.puts db2epub_cmd if $DEBUG
       success = system(db2epub_cmd)
       raise "Could not render as .epub to #{output_file} (#{db2epub_cmd})" unless success
@@ -105,7 +105,7 @@ module DocBook
       callouts = copy_callouts()
       # zip -X -r ../book.epub mimetype META-INF OEBPS
       # Double-quote stylesheet & file to help Windows cmd.exe
-      zip_cmd = "cd \"#{@output_dir}\" &&  #{ZIPPER} #{quiet} -X -r  \"#{File.expand_path(output_file)}\" \"#{mimetype_filename}\" \"#{meta}\" \"#{oebps}\""
+      zip_cmd = %Q(cd "#{@output_dir}" &&  #{ZIPPER} #{quiet} -X -r  "#{File.expand_path(output_file)}" "#{mimetype_filename}" "#{meta}" "#{oebps}")
       puts zip_cmd if $DEBUG
       success = system(zip_cmd)
       raise "Could not bundle into .epub file to #{output_file}" unless success
@@ -115,13 +115,14 @@ module DocBook
     # were XIncluded or added by ENTITY
     #   http://sourceforge.net/tracker/?func=detail&aid=2750442&group_id=21935&atid=373747
     def collapse_docbook
+      # Double-quote stylesheet & file to help Windows cmd.exe
       collapsed_file = File.join(File.expand_path(File.dirname(@docbook_file)), 
                                  '.collapsed.' + File.basename(@docbook_file))
-      entity_collapse_command = "xmllint --loaddtd --noent -o '#{collapsed_file}' '#{@docbook_file}'"
+      entity_collapse_command = %Q(xmllint --loaddtd --noent -o "#{collapsed_file}" "#{@docbook_file}")
       entity_success = system(entity_collapse_command)
       raise "Could not collapse named entites in #{@docbook_file}" unless entity_success
 
-      xinclude_collapse_command = "xmllint --xinclude -o '#{collapsed_file}' '#{collapsed_file}'"
+      xinclude_collapse_command = %Q(xmllint --xinclude -o "#{collapsed_file}" "#{collapsed_file}")
       xinclude_success = system(xinclude_collapse_command)
       raise "Could not collapse XIncludes in #{@docbook_file}" unless xinclude_success
 
Index: epub/bin/spec/files/partintro.xml
===================================================================
--- epub/bin/spec/files/partintro.xml	(Revision 0)
+++ epub/bin/spec/files/partintro.xml	(Revision 8900)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+          "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd";>
+<part>
+  <title>Partintro with sect2s</title>
+  <partintro>
+    <sect1>
+      <title>A sect1 in a partintro</title>
+      <para>With a little text.</para>
+    <sect2>
+      <title>A sect2 in a sect1 in a partintro</title>
+      <para>With a little text.</para>
+    </sect2>
+    <sect2>
+      <title>A 2nd sect2 in a sect1 in a partintro</title>
+      <para>With a little text.</para>
+    </sect2>
+    </sect1>
+  </partintro>
+  <chapter>
+    <title>Chapter</title>
+    <para>Some test data
+    <indexterm>
+      <primary>First Part</primary>
+    </indexterm></para>
+    <para>Referencing <firstterm>gloss-1</firstterm>.</para>
+    <sect1>
+      <title>A sect1 in a chapter</title>
+      <para>With a little text.</para>
+    </sect1>
+  </chapter>
+
+  <index/>
+</part>
+

Eigenschaftsänderungen: epub/bin/spec/files/partintro.xml
___________________________________________________________________
Hinzugefügt: svn:mime-type
   + text/xml

Index: epub/bin/spec/files/test_cust.xsl
===================================================================
--- epub/bin/spec/files/test_cust.xsl	(Revision 8504)
+++ epub/bin/spec/files/test_cust.xsl	(Revision 8900)
@@ -4,5 +4,6 @@ version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
   <xsl:import href="../../../../epub/docbook.xsl" />
   <xsl:param name="xref.with.number.and.title" select="0"/>
+  <xsl:param name="index.on.type" select="1"/>
 
 </xsl:stylesheet>
Index: epub/bin/spec/files/orm.book.001.xml
===================================================================
--- epub/bin/spec/files/orm.book.001.xml	(Revision 8504)
+++ epub/bin/spec/files/orm.book.001.xml	(Revision 8900)
@@ -988,6 +988,8 @@ Txxxx xxx x xxx xxxxxx xxxx xxxxx xxx xx
 Txxxx xxx x xxxxxxx xxxxxx xxxx xxxxx xxx xxxxxxx xxxxxxx. Sxxxxx xxxx xxxxx xxx xxxx-xxxxxxxxx. Sx xxxxxxxxx xxx xxxxxxxxx xxxxxxx xxxxxx xxxxxxxxx xxxx xxxxxx xx xxxxxxxxx. Fxx x xxx xx xxx xxxxxx xxxx xxxxx, x xxxxxxx xxxxxx xxxxx xxx xx xxxxxxxxx. Ix x xxxxxx xx xxxxxxx xx x xxxxxx xxxx xxxxxxx xxx xxxxx xxx xxx xxx xxxxxx, xxx xxxxxx xxxx xx xxxxx-xxxxxxxxx xxxx xxxxxx. Bxxxxx xxxxxxx xxx xxxx-xxxxxxxxx.
 </para>
       <para>Bxxxx xx x xxxx xx xxxxxx xxxx xxxxx, xxxx’xx xxx xxxxxxxxx xxxxxxxxxxxxxx. Ixxxxxx, xxxx’xx xxxxxxxxx xx xxxxxxxxx xxxxx xxxxx xx xxx xxxx xx xxxxxx xxxxxx xxxx xxx xxxxxxx. Txx xxxx xxxx xxxxxxxx xxx xxxxx xx xxxxxxxxxx xx xxxxx xxx xxxx xxxx xxxx.</para>
+      <sect2>
+        <title>More wrapping</title>
       <refentry id="appa-77011">
         <refmeta>
           <refentrytitle>CHAR</refentrytitle>
@@ -1282,6 +1284,7 @@ Txx <literal moreinfo="none">SET</litera
 </para>
         </refsect1>
       </refentry>
+    </sect2>
     </sect1>
   </appendix>
   <appendix id="mysqlian-APP-B">
Index: epub/bin/spec/files/DejaVuSerif-Italic.otf
===================================================================
Kann nicht anzeigen: Dateityp ist als binär angegeben.
svn:mime-type = application/octet-stream

Eigenschaftsänderungen: epub/bin/spec/files/DejaVuSerif-Italic.otf
___________________________________________________________________
Hinzugefügt: svn:mime-type
   + application/octet-stream

Index: epub/bin/spec/files/index.with.symbol.and.type.xml
===================================================================
--- epub/bin/spec/files/index.with.symbol.and.type.xml	(Revision 0)
+++ epub/bin/spec/files/index.with.symbol.and.type.xml	(Revision 8900)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd";>
+<book>
+  <title>First Book</title>
+  <chapter>
+    <title>Chapter</title>
+    <para>Some test data
+<indexterm type="a"><primary>First Book</primary></indexterm></para>
+  </chapter>
+  <chapter>
+    <title>Chapter</title>
+    <para>Some test data
+<indexterm type="b"><primary>λ (lambda operator)</primary></indexterm></para>
+  </chapter>
+  <part>
+    <title>Part Title</title>
+    <chapter>
+      <title>Chapter</title>
+      <para>Some test data
+<indexterm type="b"><primary>Third Book</primary></indexterm></para>
+    </chapter>
+    <index type="a">
+      <title>A Index</title>
+    </index>
+    <index type="b">
+      <title>B Index</title>
+    </index>
+    <index/>
+  </part>
+</book>

Eigenschaftsänderungen: epub/bin/spec/files/index.with.symbol.and.type.xml
___________________________________________________________________
Hinzugefügt: svn:mime-type
   + text/xml

Index: epub/bin/spec/files/test.css
===================================================================
--- epub/bin/spec/files/test.css	(Revision 8504)
+++ epub/bin/spec/files/test.css	(Revision 8900)
@@ -4,8 +4,17 @@
   font-weight: normal;
   src:url(DejaVuSerif.otf);
 }
+@font-face {
+  font-family: "DejaVu Serif Italic";
+  font-style: italic;
+  font-weight: normal;
+  src:url(DejaVuSerif-Italic.otf);
+}
 h2 {
   font-family: "DejaVu Serif";
   text-align: center;
   color: #dda0dd;
 }
+em {
+  font-family: "DejaVu Serif Italic";
+}
Index: epub/bin/spec/epub_realbook_spec.rb
===================================================================
--- epub/bin/spec/epub_realbook_spec.rb	(Revision 8504)
+++ epub/bin/spec/epub_realbook_spec.rb	(Revision 8900)
@@ -29,7 +29,7 @@ describe DocBook::Epub do
     FileUtils.copy(@epub_file, "." + File.basename(@xml_file, ".xml") + ".epub") if $DEBUG
 
     @tmpdir2 = File.join(Dir::tmpdir(), "epubreal"); Dir.mkdir(@tmpdir2) rescue Errno::EEXIST
-    success = system("unzip -q -o -d #{@tmpdir2} #{@epub_file}")
+    success = system(%Q(unzip -q -o -d "#{@tmpdir2}" "#{@epub_file}"))
     raise "Could not unzip #{epub_file}" unless success
 
     @html_files = Dir.glob(File.join(@tmpdir2, "**", "*.html"))
Index: epub/bin/spec/epub_spec.rb
===================================================================
--- epub/bin/spec/epub_spec.rb	(Revision 8504)
+++ epub/bin/spec/epub_spec.rb	(Revision 8900)
@@ -39,8 +39,11 @@ describe DocBook::Epub do
     @css_file = File.join(@filedir, @css_file_base)
     customization_layer = nil
     @embedded_font_file_base = "DejaVuSerif.otf"
-    embedded_fonts = [File.join(@filedir, @embedded_font_file_base)]
-    @css_epub = DocBook::Epub.new(File.join(@testdocsdir, "book.002.xml"), @tmpdir, @css_file, customization_layer, embedded_fonts)
+    @embedded_font_file2_base = "DejaVuSerif-Italic.otf"
+    @embedded_fonts = [File.join(@filedir, @embedded_font_file_base),
+                       File.join(@filedir, @embedded_font_file2_base),
+                      ]
+    @css_epub = DocBook::Epub.new(File.join(@testdocsdir, "book.002.xml"), @tmpdir, @css_file, customization_layer, @embedded_fonts)
     @css_epubfile = File.join(@tmpdir, "css.epub")
     @css_epub.render_to_file(@css_epubfile, $DEBUG)
 
@@ -167,7 +170,7 @@ describe DocBook::Epub do
     begin
       tmpdir = File.join(Dir::tmpdir(), "epubinclusiontest"); Dir.mkdir(tmpdir) rescue Errno::EEXIST
 
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{File.expand_path(@manygraphic_epubfile)}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{File.expand_path(@manygraphic_epubfile)}"))
       raise "Could not unzip #{@manygraphic_epubfile}" unless success
       glob = Dir.glob(File.join(tmpdir, "**", "*.*"))
       pdfs_in_glob = glob.find_all {|file| file =~ /\.pdf/i}
@@ -183,7 +186,7 @@ describe DocBook::Epub do
     begin
       tmpdir = File.join(Dir::tmpdir(), "epubcsshtmltest"); Dir.mkdir(tmpdir) rescue Errno::EEXIST
 
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{@css_epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{@css_epubfile}"))
       raise "Could not unzip #{@css_epubfile}" unless success
       html_files = Dir.glob(File.join(tmpdir, "**", "*.html"))
       html_links = html_files.find_all {|html_file| File.open(html_file).readlines.to_s =~ /<link [^>]*#{@css_file_base}/}
@@ -199,7 +202,7 @@ describe DocBook::Epub do
     begin
       tmpdir = File.join(Dir::tmpdir(), "epubcssfiletest"); Dir.mkdir(tmpdir) rescue Errno::EEXIST
 
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{@css_epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{@css_epubfile}"))
       raise "Could not unzip #{@css_epubfile}" unless success
       css_files = Dir.glob(File.join(tmpdir, "**", "*.css"))
       css_files.should_not be_empty
@@ -214,7 +217,7 @@ describe DocBook::Epub do
     begin
       tmpdir = File.join(Dir::tmpdir(), "epubcsshtmltest"); Dir.mkdir(tmpdir) rescue Errno::EEXIST
       
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{@css_epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{@css_epubfile}"))
       raise "Could not unzip #{@css_epubfile}" unless success
       opf_files = Dir.glob(File.join(tmpdir, "**", "*.opf"))
       opf_links = opf_files.find_all {|opf_file| File.open(opf_file).readlines.to_s =~ /<(opf:item|item) [^>]*#{@css_file_base}/}
@@ -230,11 +233,14 @@ describe DocBook::Epub do
     begin
       tmpdir = File.join(Dir::tmpdir(), "epubfontman"); Dir.mkdir(tmpdir) rescue Errno::EEXIST
       
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{@css_epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{@css_epubfile}"))
       raise "Could not unzip #{@css_epubfile}" unless success
       opf_files = Dir.glob(File.join(tmpdir, "**", "*.opf"))
-      opf_links = opf_files.find_all {|opf_file| File.open(opf_file).readlines.to_s =~ /<(opf:item|item) [^>]*#{@embedded_font_file_base}/}
-      opf_links.should_not be_empty
+
+      @embedded_fonts.each {|font|
+        opf_links = opf_files.find_all {|opf_file| File.open(opf_file).readlines.to_s =~ /<(opf:item|item) [^>]*#{File.basename(font)}/}
+        opf_links.should_not be_empty
+      }  
     rescue => e
       raise e
     ensure
@@ -246,10 +252,12 @@ describe DocBook::Epub do
     begin
       tmpdir = File.join(Dir::tmpdir(), "epubfontbundle"); Dir.mkdir(tmpdir) rescue Errno::EEXIST
       
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{@css_epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{@css_epubfile}"))
       raise "Could not unzip #{@css_epubfile}" unless success
-      font_files = Dir.glob(File.join(tmpdir, "**", @embedded_font_file_base))
-      font_files.should_not be_empty
+      @embedded_fonts.each {|font|
+        font_files = Dir.glob(File.join(tmpdir, "**", File.basename(font)))
+        font_files.should_not be_empty
+      }  
     rescue => e
       raise e
     ensure
@@ -257,6 +265,10 @@ describe DocBook::Epub do
     end
   end
 
+  it "should be valid .epub after including more than one embedded font" do
+    @css_epubfile.should be_valid_epub
+  end
+
   it "should include one and only one <h1> in each HTML file in rendered ePub files for <book>s" do
     begin
       tmpdir = File.join(Dir::tmpdir(), "epubtoctest"); Dir.mkdir(tmpdir) rescue Errno::EEXIST
@@ -266,7 +278,7 @@ describe DocBook::Epub do
       epub.render_to_file(epubfile, $DEBUG)
       FileUtils.copy(epubfile, ".h1c.epub") if $DEBUG
 
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{epubfile}"))
       raise "Could not unzip #{epubfile}" unless success
       glob = Dir.glob(File.join(tmpdir, "**", "*.html"))
       glob.each {|html_file| 
@@ -290,7 +302,7 @@ describe DocBook::Epub do
       epub.render_to_file(epubfile, $DEBUG)
       FileUtils.copy(epubfile, ".h1c2.epub") if $DEBUG
 
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{epubfile}"))
       raise "Could not unzip #{epubfile}" unless success
       glob = Dir.glob(File.join(tmpdir, "**", "*.html"))
       glob.each {|html_file| 
@@ -314,7 +326,7 @@ describe DocBook::Epub do
       epub.render_to_file(epubfile, $DEBUG)
       FileUtils.copy(epubfile, ".tcl.epub") if $DEBUG
 
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{epubfile}"))
       raise "Could not unzip #{epubfile}" unless success
       glob = Dir.glob(File.join(tmpdir, "**", "*.opf"))
       toc_links = glob.find_all {|opf_file| File.open(opf_file).readlines.to_s =~ /type=["']toc["']/}
@@ -338,13 +350,14 @@ describe DocBook::Epub do
       epub.render_to_file(epubfile, $DEBUG)
       FileUtils.copy(epubfile, ".cust.epub") if $DEBUG
 
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{epubfile}"))
       raise "Could not unzip #{epubfile}" unless success
       glob = Dir.glob(File.join(tmpdir, "**", "*.html")) 
       # The customization layer changes the style of cross references to _not_
       # include the title, so it should only appear in the part file and the
       # TOC
       files_including_part_title = glob.find_all {|html_file| File.open(html_file).readlines.to_s =~ />[^<]*Part One Title/}
+      p files_including_part_title if $DEBUG
       files_including_part_title.length.should == 2
     rescue => e
       raise e
Index: epub/bin/spec/epub_regressions_spec.rb
===================================================================
--- epub/bin/spec/epub_regressions_spec.rb	(Revision 8504)
+++ epub/bin/spec/epub_regressions_spec.rb	(Revision 8900)
@@ -34,7 +34,7 @@ describe DocBook::Epub do
     FileUtils.copy(epub_file, "./.t.epub") if $DEBUG
 
     itemref_tmpdir = File.join(Dir::tmpdir(), "epubitemref"); Dir.mkdir(itemref_tmpdir) rescue Errno::EEXIST
-    system("unzip -q -o -d #{itemref_tmpdir} #{epub_file}")
+    system(%Q(unzip -q -o -d "#{itemref_tmpdir}" "#{epub_file}"))
     opf_file = File.join(itemref_tmpdir, "OEBPS", "content.opf")
     opf = REXML::Document.new(File.new(opf_file))
 
@@ -51,7 +51,7 @@ describe DocBook::Epub do
       epub.render_to_file(epubfile, $DEBUG)
       FileUtils.copy(epubfile, ".re.ded.epub") if $DEBUG
 
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{epubfile}"))
       raise "Could not unzip #{epubfile}" unless success
       glob = Dir.glob(File.join(tmpdir, "**", "*.opf"))
       index_html_links = glob.find_all {|opf_file| File.open(opf_file).readlines.to_s =~ /href=["']index.html["']/}
@@ -73,7 +73,7 @@ describe DocBook::Epub do
 
       tmpdir = File.join(Dir::tmpdir(), "epubcssreg"); Dir.mkdir(tmpdir) rescue Errno::EEXIST
 
-      success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{css_epubfile}")
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{css_epubfile}")
       raise "Could not unzip #{css_epubfile}" unless success
       opf_files = Dir.glob(File.join(tmpdir, "**", "*.opf"))
       opf_files.find_all {|opf_file| 
@@ -97,10 +97,10 @@ describe DocBook::Epub do
     xhtml_dtd = "DTD XHTML 1.1"
 
     itemref_tmpdir = File.join(Dir::tmpdir(), "epubitemref"); Dir.mkdir(itemref_tmpdir) rescue Errno::EEXIST
-    system("unzip -q -o -d #{itemref_tmpdir} #{epub_file}")
+    system(%Q(unzip -q -o -d "#{itemref_tmpdir}" "#{epub_file}"))
 
     opf_file = File.join(itemref_tmpdir, "OEBPS", "content.opf")
-    xhtml_dtd_in_opf_file = system("grep '#{xhtml_dtd}' #{opf_file}")
+    xhtml_dtd_in_opf_file = system(%Q(grep "#{xhtml_dtd}" "#{opf_file}"))
     xhtml_dtd_in_opf_file.should_not be_true
   end
 
@@ -160,13 +160,84 @@ describe DocBook::Epub do
     epubfile  = File.join(tmpdir, shortname + ".epub")
     epub.render_to_file(epubfile, $DEBUG)
     FileUtils.copy(epubfile, "." + shortname + ".epub") if $DEBUG
-    success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{File.expand_path(epubfile)}")
+    success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{File.expand_path(epubfile)}"))
     raise "Could not unzip #{epubfile}" unless success
     container_file = File.join(tmpdir, 'META-INF', 'container.xml')
     container_lines = File.open(container_file).readlines
     container_lines.to_s.should =~ /<container/
   end
 
+  it "should not include an index entry for Symbols when using @types and the symbols are not a part of that @type" do
+    css_file = nil
+    index_on_type_customization_layer = File.join(@filedir, "test_cust.xsl")
+    typed_index_epub = DocBook::Epub.new(File.join(@filedir, "index.with.symbol.and.type.xml"), @tmpdir, css_file, index_on_type_customization_layer)
+    typed_index_epubfile  = File.join(@tmpdir, "typed_indexepub.epub")
+    typed_index_epub.render_to_file(typed_index_epubfile, $DEBUG)
+    typed_index_epubfile.should be_valid_epub  
+  end
+
+  it "should include chunked refentries in the spine even when they're deeply nested" do
+    opf_lns = opf_lines('orm.book.001.xml', @filedir)
+    re01_id = opf_lns.to_s.sub(/.+<item id="([^"]+)" href="re01.html".+/m, '\1')
+    opf_lns.to_s.should =~ /<itemref idref="#{re01_id}"/
+  end
+
+  it "should include chunked refentries in the spine in the correct order and adjacency even when they're deeply nested" do
+    opf_lns = opf_lines('orm.book.001.xml', @filedir)
+    before_refentry_id = opf_lns.to_s.sub(/.+<item id="([^"]+)" href="apa.html".+/m, '\1')
+    re01_id = opf_lns.to_s.sub(/.+<item id="([^"]+)" href="re01.html".+/m, '\1')
+    re02_id = opf_lns.to_s.sub(/.+<item id="([^"]+)" href="re02.html".+/m, '\1')
+    opf_lns.to_s.should =~ /<itemref idref="#{before_refentry_id}"[^>]*[^<]*<itemref idref="#{re01_id}"[^>]*>[^<]*<itemref idref="#{re02_id}"/m
+  end
+
+  it "should not include font style elements like <b> or <i>" do
+    begin
+      tmpdir = File.join(Dir::tmpdir(), "epubbtest"); Dir.mkdir(tmpdir) rescue Errno::EEXIST
+      
+      epub = DocBook::Epub.new(File.join(@testdocsdir, "book.002.xml"), @tmpdir)
+      epubfile = File.join(tmpdir, "bcount.epub")
+      epub.render_to_file(epubfile, $DEBUG)
+      FileUtils.copy(epubfile, ".b.epub") if $DEBUG
+
+      success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{epubfile}"))
+      raise "Could not unzip #{epubfile}" unless success
+      glob = Dir.glob(File.join(tmpdir, "**", "*.html"))
+      glob.each {|html_file| 
+        bs = File.open(html_file).readlines.to_s.scan(/<b>/)
+        bs.should be_empty
+        is = File.open(html_file).readlines.to_s.scan(/<i>/)
+        is.should be_empty
+      }
+    rescue => e
+      raise e
+    ensure
+      FileUtils.rm_r(tmpdir, :force => true)
+    end  
+  end  
+
+  it "should allow sect2s inside partintros" do
+    partintro_epub = DocBook::Epub.new(File.join(@filedir, "partintro.xml"), @tmpdir)
+    partintro_epubfile  = File.join(@tmpdir, "partintro.epub")
+    partintro_epub.render_to_file(partintro_epubfile, $DEBUG)
+    partintro_epubfile.should be_valid_epub  
+  end
+
+  it "should create NCX documents using a default namespace" do
+    ncx_epub = DocBook::Epub.new(File.join(@filedir, "partintro.xml"), @tmpdir)
+    ncx_epubfile  = File.join(@tmpdir, "ncx.epub")
+    ncx_epub.render_to_file(ncx_epubfile, $DEBUG)
+    ncx_epubfile.should be_valid_epub  
+
+    ncx_tmpdir = File.join(Dir::tmpdir(), "epubncx"); Dir.mkdir(ncx_tmpdir) rescue Errno::EEXIST
+    system(%Q(unzip -q -o -d "#{ncx_tmpdir}" "#{ncx_epubfile}"))
+
+    ncx_file = File.join(ncx_tmpdir, "OEBPS", "toc.ncx")
+    ncx_default = '<ncx '
+
+    ncx_in_default_ns = system(%Q(grep "#{ncx_default}" "#{ncx_file}"))
+    ncx_in_default_ns.should be_true
+  end
+
   after(:all) do
     FileUtils.rm_r(@tmpdir, :force => true)
   end  
Index: epub/bin/spec/spec_helper.rb
===================================================================
--- epub/bin/spec/spec_helper.rb	(Revision 8504)
+++ epub/bin/spec/spec_helper.rb	(Revision 8900)
@@ -46,7 +46,7 @@ def opf_lines(filename, filedir)
   epubfile  = File.join(tmpdir, shortname + ".epub")
   epub.render_to_file(epubfile, $DEBUG)
   FileUtils.copy(epubfile, "." + shortname + ".epub") if $DEBUG
-  success = system("unzip -q -d #{File.expand_path(tmpdir)} -o #{File.expand_path(epubfile)}")
+  success = system(%Q(unzip -q -d "#{File.expand_path(tmpdir)}" -o "#{File.expand_path(epubfile)}"))
   raise "Could not unzip #{epubfile}" unless success
   opf_file = Dir.glob(File.join(tmpdir, "**", "*.opf")).first
   opf_lines = File.open(opf_file).readlines
Index: epub/bin/spec/README
===================================================================
--- epub/bin/spec/README	(Revision 8504)
+++ epub/bin/spec/README	(Revision 8900)
@@ -1,20 +1,73 @@
-How to run the tests?
+EPUB Output Test Suite
+======================
 
-0. Checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/testdocs somewhere, 
-   and set and environment variable, $DOCBOOK_SVN, to point to the parent directory
-1. Have an 'epubcheck' shell command in your PATH that invokes the epubcheck Java utility   
-2. Get RSpec http://rspec.info/ version=~1.1
-3. Do this:
+The DocBook-XSL EPUB output is backed by an extensive automated test suite. It
+includes regression tests (epub_regressions_spec.rb), feature tests
+(epub_spec.rb), a test of "real" book-length content (epub_realbook_spec.rb),
+and a huge set of "smoke" tests, which check that *every* document in the
+DocBook test document repository can create a valid EPUB (currently at 90%+
+success).
 
-  $ cd epub/bin
-  $ spec spec/epub_spec.rb 
+Anyone considering developing, refactoring, or enhancing the EPUB output should
+run these tests before submitted changes to SVN. The test suite may also help
+improve bug reports.
+
+The tests were written in Ruby using RSpec.
+
+
+Prerequisites
+-------------
+
+The EPUB test suite requires the following software be installed and in your
+PATH (or equivalent for Windows):
+
+* xsltproc
+* XML Catalogs for DocBook 4.4 & 4.5 (this can be a pain)
+* ruby 1.8+
+* rspec version=1.1 http://rspec.info (gem install rspec --version 1.1)
+* zip & unzip
+* java
+* epubcheck (1.0.5+) http://code.google.com/p/epubcheck/
+  Note: a standalone epubcheck command is just a shell script or .bat as:
+
+  epubcheck (Linux/Mac), chmod 775'd:
+    #!/bin/sh
+    java -jar /path/to/epubcheck-1.0.5.jar $@ # Linux/Mac
+
+  epubcheck.bar (Windows):
+    java -jar "/path/to/epubcheck-1.0.5.jar" %1 
+
+
+Environment
+-----------
+
+Before running the test suite you must check out (all of) 
+https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/ and set the
+environment variable DOCBOOK_SVN to the location of the checkout.
+
+
+Running tests
+-------------
+
+    $ cd epub/bin
+    $ spec spec/epub_spec.rb 
+    # ditto with the other *_spec.rb
 
 Or, prettier:
 
-  $ cd epub/bin
-  $ spec --format specdoc --color spec/epub_spec.rb 
+    $ cd epub/bin
+    $ spec --format specdoc --color spec/epub_spec.rb 
+
+
+The tests verbosity can be increased by seting $DEBUG to true (near the top of
+each spec file)
+
+
+Windows notes
+-------------
+
+Installing xsltproc can be trying. Please refer to http://www.sagehill.net/docbookxsl/InstallingAProcessor.html.
 
-4. Repeat for other files in spec/*spec.rb
+The other dependencies should be (relatively) straightforward.
 
-How to make them more verbose?
-1. Set $DEBUG to true (near the top of each spec)
+You may have to "Unblock" the .dll and .jar files you downloaded in the File Properties (System) on some versions.
Index: epub/bin/spec/examples/AMasqueOfDays.epub
===================================================================
Kann nicht anzeigen: Dateityp ist als binär angegeben.
svn:mime-type = application/octet-stream
Index: manpages/endnotes.xsl
===================================================================
--- manpages/endnotes.xsl	(Revision 8504)
+++ manpages/endnotes.xsl	(Revision 8900)
@@ -259,7 +259,9 @@
           <!-- * do some further checking on it, so we can emit warnings -->
           <!-- * about potential problems -->
         <xsl:for-each select="node()">
-          <xsl:if test="local-name() != 'para' and local-name() !=''">
+          <xsl:if test="local-name() != 'para' and
+                        local-name() != 'simpara' and
+                        local-name() !=''">
             <!-- * for each node we find as a child of a footnote or -->
             <!-- * annotation, if it's not a para or a text node, emit a -->
             <!-- * warning... because in manpages output, we can't render -->
Index: manpages/docbook.xsl
===================================================================
--- manpages/docbook.xsl	(Revision 8504)
+++ manpages/docbook.xsl	(Revision 8900)
@@ -233,6 +233,7 @@
       <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
       <!-- * (re)define some macros -->
       <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+      <xsl:call-template name="define.portability.macros"/>
       <xsl:if test="not($man.output.better.ps.enabled = 0)">
         <xsl:call-template name="define.macros"/>
       </xsl:if>
Index: manpages/other.xsl
===================================================================
--- manpages/other.xsl	(Revision 8504)
+++ manpages/other.xsl	(Revision 8900)
@@ -223,7 +223,7 @@ manvolnum
   <xsl:call-template name="string.subst">
     <xsl:with-param name="string" select="$content"/>
     <xsl:with-param name="target">'</xsl:with-param>
-    <xsl:with-param name="replacement">\'</xsl:with-param>
+    <xsl:with-param name="replacement">\*(Aq</xsl:with-param>
   </xsl:call-template>
 </xsl:template>
 
@@ -306,7 +306,7 @@ manvolnum
     </xsl:call-template>
     <xsl:text>&#10;</xsl:text>
     <xsl:text>.\"  Language: </xsl:text>
-    <xsl:call-template name="l10.language.name"/>
+    <xsl:call-template name="l10n.language.name"/>
     <xsl:text>&#10;</xsl:text>
     <xsl:text>.\"</xsl:text>
     <xsl:text>&#10;</xsl:text>
@@ -595,10 +595,11 @@ manvolnum
           <xsl:with-param name="message-prolog">Note: </xsl:with-param>
           <xsl:with-param name="message-epilog"> (soelim stub)</xsl:with-param>
           <xsl:with-param name="content">
-            <xsl:value-of select="concat('.so man', $section, '/')"/>
+            <xsl:value-of select="'.so '"/>
             <xsl:call-template name="make.adjusted.man.filename">
               <xsl:with-param name="name" select="$first.refname"/>
               <xsl:with-param name="section" select="$section"/>
+              <xsl:with-param name="lang" select="$lang"/>
             </xsl:call-template>
             <xsl:text>&#10;</xsl:text>
           </xsl:with-param>
@@ -657,6 +658,24 @@ manvolnum
   </xsl:template>
 
   <!-- ============================================================== -->
+
+  <!-- There is some stuff, that is not portable between groff/troff. -->
+  <xsl:template name="define.portability.macros">
+    <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+    <xsl:text>.\" * Define some portability stuff&#10;</xsl:text>
+    <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
+    <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+    <xsl:text>.\" http://bugs.debian.org/507673&#10;</xsl:text>
+    <xsl:text>.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html&#10;</xsl:text>
+    <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&#10;</xsl:text>
+    <xsl:text>&#10;</xsl:text>
+    <xsl:text>.ie \n(.g .ds Aq \(aq</xsl:text>
+    <xsl:text>&#10;</xsl:text>
+    <xsl:text>.el       .ds Aq '</xsl:text>
+    <xsl:text>&#10;</xsl:text>
+  </xsl:template>
+
+  <!-- ============================================================== -->
 
   <xsl:template name="define.macros">
     <xsl:text>.\" -----------------------------------------------------------------&#10;</xsl:text>
Index: manpages/block.xsl
===================================================================
--- manpages/block.xsl	(Revision 8504)
+++ manpages/block.xsl	(Revision 8900)
@@ -101,12 +101,24 @@
 </xsl:template>
 
 <xsl:template match="simpara">
-  <xsl:if test="not(ancestor::authorblurb)
-    and not(ancestor::personblurb)
-    and not(ancestor::callout)"
-    >
-    <xsl:text>.sp&#10;</xsl:text>
-  </xsl:if>
+  <xsl:choose>
+    <xsl:when test="ancestor::footnote or
+                    ancestor::annotation or
+                    ancestor::authorblurb or
+                    ancestor::personblurb or
+                    ancestor::callout">
+      <xsl:if test="preceding-sibling::*[not(name() ='')]">
+        <xsl:text>.sp</xsl:text>
+        <xsl:text>&#10;</xsl:text>
+        <xsl:text>.RS 4n</xsl:text>
+        <xsl:text>&#10;</xsl:text>
+      </xsl:if>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text>.sp</xsl:text>
+      <xsl:text>&#10;</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
   <xsl:variable name="content">
     <xsl:apply-templates/>
   </xsl:variable>
Index: manpages/lists.xsl
===================================================================
--- manpages/lists.xsl	(Revision 8504)
+++ manpages/lists.xsl	(Revision 8900)
@@ -259,8 +259,8 @@
   <!-- * it, within the same para, then add a blank line and move -->
   <!-- * the left margin back to where it was -->
   <xsl:if test="parent::para and following-sibling::node()">
-    <xsl:text>.sp&#10;</xsl:text>
-    <xsl:text>.RE&#10;</xsl:text>
+    <xsl:text>.sp</xsl:text>
+    <xsl:text>&#10;</xsl:text>
   </xsl:if>
 </xsl:template>
 
@@ -280,11 +280,7 @@
     parent::para[following-sibling::node()] or
     parent::simpara[following-sibling::node()] or
     parent::remark[following-sibling::node()]">
-    <xsl:text>.RS</xsl:text> 
-    <xsl:if test="not($list-indent = '')">
-      <xsl:text> </xsl:text>
-      <xsl:value-of select="$list-indent"/>
-    </xsl:if>
+    <xsl:text>.sp</xsl:text> 
     <xsl:text>&#10;</xsl:text>
   </xsl:if>
 </xsl:template>
Index: xhtml-1_1/html2xhtml.xsl
===================================================================
--- xhtml-1_1/html2xhtml.xsl	(Revision 8504)
+++ xhtml-1_1/html2xhtml.xsl	(Revision 8900)
@@ -3,7 +3,7 @@
                 xmlns:exsl="http://exslt.org/common";
                 xmlns:xslo="http://www.w3.org/1999/XSL/TransformAlias";
                 xmlns:saxon="http://icl.com/saxon";
-                exclude-result-prefixes="exsl"
+                exclude-result-prefixes="exsl saxon"
                 version="1.0">
 
 <xsl:include href="../lib/lib.xsl"/>
@@ -126,7 +126,6 @@
 <xsl:template match="xsl:param[@name='ulink.target']">
 	<xsl:copy>
 		<xsl:copy-of select="@*"/>
-		<xsl:element name="xsl:text"><xsl:text></xsl:text></xsl:element>
 	</xsl:copy>
 </xsl:template>
 
@@ -232,6 +231,13 @@
   </xsl:copy>
 </xsl:template>
 
+<!-- "The following HTML elements specify font information. 
+      Although they are not all deprecated, their use is discouraged in 
+      favor of style sheets." -->
+<xsl:template match="b|i">
+  <xsl:apply-templates/>
+</xsl:template>  
+
 <!-- this only occurs in docbook.xsl to identify errors -->
 <xsl:template match="font">
   <span class="ERROR" xmlns="http://www.w3.org/1999/xhtml";>
Index: xhtml-1_1/Makefile
===================================================================
--- xhtml-1_1/Makefile	(Revision 8504)
+++ xhtml-1_1/Makefile	(Revision 8900)
@@ -7,12 +7,14 @@ all: xsl-files profile-docbook.xsl profi
 
 remove-old:
 	for f in *.xsl; do if [ ! -f ../html/$$f -a "$$f" != "html2xhtml.xsl" ]; then rm $$f; fi; done
+	$(RM) docbook.css.xml
 
 add-new:
 	for f in ../html/*.xsl; do if [ ! -f `basename $$f` ]; then \
           echo $$f; \
           cp $$f .; \
           touch -t 197001010000 `basename $$f`; fi; done
+	cp ../html/docbook.css.xml .
 
 # Oh, come on! It must be possible to do this in Make, but I can't figure out how (ndw)
 

Eigenschaftsänderungen: xhtml-1_1
___________________________________________________________________
Geändert: svn:ignore
   - .cvsignore
admon.xsl
annotations.xsl
autoidx-kimber.xsl
autoidx-kosek.xsl
autoidx-ng.xsl
autoidx.xsl
autotoc.xsl
biblio-iso690.xsl
biblio.xsl
block.xsl
callout.xsl
changebars.xsl
chunk-changebars.xsl
chunk-code.xsl
chunk-common.xsl
chunk.xsl
chunker.xsl
chunkfast.xsl
chunktoc.xsl
component.xsl
db5strip.xsl
division.xsl
docbook.xsl
docbookng.xsl
ebnf.xsl
footnote.xsl
formal.xsl
glossary.xsl
graphics.xsl
highlight.xsl
html-rtf.xsl
html.xsl
htmltbl.xsl
index.xsl
info.xsl
inline.xsl
keywords.xsl
lists.xsl
maketoc.xsl
manifest.xsl
math.xsl
oldchunker.xsl
onechunk.xsl
param.xsl
pi.xsl
profile-chunk-code.xsl
profile-chunk.xsl
profile-docbook.xsl
profile-onechunk.xsl
qandaset.xsl
refentry.xsl
sections.xsl
synop.xsl
table.xsl
task.xsl
titlepage.templates.xsl
titlepage.xsl
toc.xsl
verbatim.xsl
xref.xsl
xslfiles.gen

   + .cvsignore
admon.xsl
annotations.xsl
autoidx-kimber.xsl
autoidx-kosek.xsl
autoidx-ng.xsl
autoidx.xsl
autotoc.xsl
biblio-iso690.xsl
biblio.xsl
block.xsl
callout.xsl
changebars.xsl
chunk-changebars.xsl
chunk-code.xsl
chunk-common.xsl
chunk.xsl
chunker.xsl
chunkfast.xsl
chunktoc.xsl
component.xsl
db5strip.xsl
division.xsl
docbook.xsl
docbookng.xsl
docbook.css.xml
ebnf.xsl
footnote.xsl
formal.xsl
glossary.xsl
graphics.xsl
highlight.xsl
html-rtf.xsl
html.xsl
htmltbl.xsl
index.xsl
info.xsl
inline.xsl
keywords.xsl
lists.xsl
maketoc.xsl
manifest.xsl
math.xsl
oldchunker.xsl
onechunk.xsl
param.xsl
pi.xsl
profile-chunk-code.xsl
profile-chunk.xsl
profile-docbook.xsl
profile-onechunk.xsl
qandaset.xsl
refentry.xsl
sections.xsl
synop.xsl
table.xsl
task.xsl
titlepage.templates.xsl
titlepage.xsl
toc.xsl
verbatim.xsl
xref.xsl
xslfiles.gen


Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: