Index: stylesheets/xhtml/lfs-admon.xsl
===================================================================
--- stylesheets/xhtml/lfs-admon.xsl	(revision 239e8ca1b71b0264115d99bb478f9d6cbf9d7774)
+++ stylesheets/xhtml/lfs-admon.xsl	(revision 3fe8b511a872c0d5eb866ccd2603295f6ae58bbf)
@@ -1,5 +1,3 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
-
-<!-- Version 0.9 - Manuel Canales Esparcia <macana@lfs-es.org> -->
 
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
@@ -7,10 +5,10 @@
                 version="1.0">
 
-  	<!-- Use graphics in admonitions -->
+    <!-- Use graphics in admonitions -->
   <xsl:param name="admon.graphics" select="1"/>
   <xsl:param name="admon.graphics.path">../images/</xsl:param>
   <xsl:param name="admon.graphics.extension" select="'.png'"/>
 
-  	<!-- Changing the output tagging -->
+    <!-- Changing the output tagging -->
   <xsl:template name="graphical.admonition">
     <xsl:variable name="admon.type">
@@ -24,21 +22,22 @@
       </xsl:choose>
     </xsl:variable>
-    <div class="admonition">
-    	<div class ="admonhead">
-        <img alt="[{$admon.type}]">
+    <xsl:variable name="alt">
+      <xsl:call-template name="gentext">
+        <xsl:with-param name="key" select="$admon.type"/>
+      </xsl:call-template>
+    </xsl:variable>
+    <div class="{name(.)}">
+      <div class ="admonhead">
+        <img alt="[{$alt}]">
           <xsl:attribute name="src">
             <xsl:call-template name="admon.graphic"/>
           </xsl:attribute>
         </img>
-        <h3 class="{name(.)}">
-          <xsl:value-of select="$admon.type"/>
-          <xsl:if test="title">
-            <xsl:text>: </xsl:text>
-            <xsl:value-of select="title"/>
-          </xsl:if>
+        <h3 class="admontitle">
+          <xsl:apply-templates select="." mode="object.title.markup"/>
         </h3>
       </div>
       <div class="admonbody">
-				<xsl:apply-templates/>
+        <xsl:apply-templates/>
       </div>
     </div>
Index: stylesheets/xhtml/lfs-legalnotice.xsl
===================================================================
--- stylesheets/xhtml/lfs-legalnotice.xsl	(revision 239e8ca1b71b0264115d99bb478f9d6cbf9d7774)
+++ stylesheets/xhtml/lfs-legalnotice.xsl	(revision 3fe8b511a872c0d5eb866ccd2603295f6ae58bbf)
@@ -1,5 +1,3 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
-
-<!-- Version 0.9 - Manuel Canales Esparcia <macana@lfs-es.org> -->
 
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
@@ -7,6 +5,5 @@
                 version="1.0">
 
-  	<!-- Generating the page -->
-
+    <!-- Generating the page -->
   <xsl:template match="legalnotice" mode="titlepage.mode">
     <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
@@ -30,13 +27,19 @@
               <xsl:apply-templates mode="titlepage.mode"/>
             </div>
-            <hr/>
             <div class="navfooter">
               <ul class="footerlinks">
-                <li>
+                <li class="home">
                   <a accesskey="h">
                     <xsl:attribute name="href">
-                      <xsl:text>../index.html</xsl:text>
+                      <xsl:text>index.html</xsl:text>
                     </xsl:attribute>
-                    <xsl:text>Home</xsl:text>
+                    <xsl:attribute name="title">
+                      <xsl:value-of select="/book/bookinfo/title"/>
+                      <xsl:text> - </xsl:text>
+                      <xsl:value-of select="/book/bookinfo/subtitle"/>
+                    </xsl:attribute>
+                    <xsl:call-template name="navig.content">
+                      <xsl:with-param name="direction" select="'home'"/>
+                    </xsl:call-template>
                   </a>
                 </li>
Index: stylesheets/xhtml/lfs-mixed.xsl
===================================================================
--- stylesheets/xhtml/lfs-mixed.xsl	(revision 239e8ca1b71b0264115d99bb478f9d6cbf9d7774)
+++ stylesheets/xhtml/lfs-mixed.xsl	(revision 3fe8b511a872c0d5eb866ccd2603295f6ae58bbf)
@@ -1,5 +1,3 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
-
-<!-- Version 0.9 - Manuel Canales Esparcia <macana@lfs-es.org> -->
 
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
@@ -7,26 +5,12 @@
                 version="1.0">
 
+    <!-- screen -->
   <xsl:template match="screen">
     <xsl:choose>
-    		<!-- Temporally hack -->
-<!-- Broke userinput   <xsl:when test="child::* = userinput">
-        <pre class="{name(.)}">
-           <kbd class="command">
-            <xsl:value-of select="."/>
-          </kbd>
+      <xsl:when test="child::* = userinput">
+        <pre class="userinput">
+            <xsl:apply-templates/>
         </pre>
-      </xsl:when> -->
-      <!-- This should be fixed in the XML code -->
-      
-      <xsl:when test="contains(text() , 'SBU')">
-        <p class="sbu">
-          <tt>
-            <xsl:value-of select="substring-before(text() , 'R')"/>
-            <br/>
-            <xsl:value-of select="substring-after(text() , 'U')"/>
-          </tt>
-        </p>
       </xsl:when>
-     
       <xsl:otherwise>
         <pre class="{name(.)}">
@@ -36,4 +20,130 @@
     </xsl:choose>
   </xsl:template>
+  
+    <!-- userinput -->
+  <xsl:template match="userinput">
+    <xsl:choose>
+      <xsl:when test="ancestor::screen">
+        <kbd class="command">
+          <xsl:apply-templates/>
+        </kbd>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:apply-imports/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+    <!-- Body attributes -->
+  <xsl:template name="body.attributes">
+    <xsl:attribute name="id">
+      <xsl:text>blfs</xsl:text>
+    </xsl:attribute>
+    <xsl:attribute name="class">
+      <xsl:value-of select="substring-after(/book/bookinfo/subtitle, ' ')"/>
+    </xsl:attribute>
+  </xsl:template>
+
+    <!-- External URLs in italic font -->
+  <xsl:template match="ulink" name="ulink">
+    <a>
+      <xsl:if test="@id">
+        <xsl:attribute name="id">
+          <xsl:value-of select="@id"/>
+        </xsl:attribute>
+      </xsl:if>
+      <xsl:attribute name="href"><xsl:value-of select="@url"/></xsl:attribute>
+       <strong>
+        <xsl:choose>
+          <xsl:when test="count(child::node())=0">
+            <xsl:value-of select="@url"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:apply-templates/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </strong>
+    </a>
+  </xsl:template>
+  
+    <!-- The <code> xhtml tag have look issues in some browsers, like Konqueror and.
+      isn't semantically correct (a filename isn't a code fragment) We will use <tt> for now. -->
+  <xsl:template name="inline.monoseq">
+    <xsl:param name="content">
+      <xsl:call-template name="anchor"/>
+      <xsl:call-template name="simple.xlink">
+        <xsl:with-param name="content">
+          <xsl:apply-templates/>
+        </xsl:with-param>
+      </xsl:call-template>
+    </xsl:param>
+    <tt class="{local-name(.)}">
+      <xsl:if test="@dir">
+        <xsl:attribute name="dir">
+          <xsl:value-of select="@dir"/>
+        </xsl:attribute>
+      </xsl:if>
+      <xsl:copy-of select="$content"/>
+    </tt>
+  </xsl:template>
+  
+  <xsl:template name="inline.boldmonoseq">
+    <xsl:param name="content">
+      <xsl:call-template name="anchor"/>
+      <xsl:call-template name="simple.xlink">
+        <xsl:with-param name="content">
+          <xsl:apply-templates/>
+        </xsl:with-param>
+      </xsl:call-template>
+    </xsl:param>
+    <!-- don't put <strong> inside figure, example, or table titles -->
+    <!-- or other titles that may already be represented with <strong>'s. -->
+    <xsl:choose>
+      <xsl:when test="local-name(..) = 'title' and (local-name(../..) = 'figure' 
+              or local-name(../..) = 'example' or local-name(../..) = 'table' or local-name(../..) = 'formalpara')">
+        <tt class="{local-name(.)}">
+          <xsl:if test="@dir">
+            <xsl:attribute name="dir">
+              <xsl:value-of select="@dir"/>
+            </xsl:attribute>
+          </xsl:if>
+          <xsl:copy-of select="$content"/>
+        </tt>
+      </xsl:when>
+      <xsl:otherwise>
+        <strong class="{local-name(.)}">
+          <tt>
+            <xsl:if test="@dir">
+              <xsl:attribute name="dir">
+                <xsl:value-of select="@dir"/>
+              </xsl:attribute>
+            </xsl:if>
+            <xsl:copy-of select="$content"/>
+          </tt>
+        </strong>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+  
+  <xsl:template name="inline.italicmonoseq">
+    <xsl:param name="content">
+      <xsl:call-template name="anchor"/>
+      <xsl:call-template name="simple.xlink">
+        <xsl:with-param name="content">
+          <xsl:apply-templates/>
+        </xsl:with-param>
+      </xsl:call-template>
+    </xsl:param>
+    <em class="{local-name(.)}">
+      <tt>
+        <xsl:if test="@dir">
+          <xsl:attribute name="dir">
+            <xsl:value-of select="@dir"/>
+          </xsl:attribute>
+        </xsl:if>
+        <xsl:copy-of select="$content"/>
+      </tt>
+    </em>
+  </xsl:template>
 
 </xsl:stylesheet>
Index: stylesheets/xhtml/lfs-navigational.xsl
===================================================================
--- stylesheets/xhtml/lfs-navigational.xsl	(revision 239e8ca1b71b0264115d99bb478f9d6cbf9d7774)
+++ stylesheets/xhtml/lfs-navigational.xsl	(revision 3fe8b511a872c0d5eb866ccd2603295f6ae58bbf)
@@ -1,6 +1,3 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
-
-<!-- Version 0.9 - Manuel Canales Esparcia <macana@lfs-es.org> -->
-<!-- Updates by Bruce Dubbs <bdubbs@linuxfromscratch.org> -->
 
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
@@ -17,5 +14,5 @@
   </xsl:template>
 
-  	<!-- Header Navigation-->
+    <!-- Header Navigation-->
   <xsl:template name="header.navigation">
     <xsl:param name="prev" select="/foo"/>
@@ -30,19 +27,18 @@
         <xsl:if test="$home != .">
           <div class="headertitles">
-            <p>
-              <xsl:apply-templates select="$home" mode="object.title.markup"/>
-              <xsl:text> &#8211; </xsl:text> <!-- ndash -->
+            <h4>
+              <xsl:text>Beyond Linux From Scratch - </xsl:text>
               <xsl:apply-templates select="$home" mode="object.subtitle.markup"/>
-            </p>
+            </h4>
             <xsl:if test="$up != $home">
-              <p><b>
+              <h3>
                 <xsl:apply-templates select="$up" mode="object.title.markup"/>
-              </b></p>
+              </h3>
             </xsl:if>
           </div>
         </xsl:if>
-        <div class="headerlinks">
-          <div class='prev'>
-            <xsl:if test="count($prev)&gt;0 and $prev != $home">
+        <ul class="headerlinks">
+          <xsl:if test="count($prev)&gt;0 and $prev != $home">
+            <li class="prev">
               <a accesskey="p">
                 <xsl:attribute name="href">
@@ -51,10 +47,18 @@
                   </xsl:call-template>
                 </xsl:attribute>
-                <xsl:text>Prev</xsl:text>
-              </a>
-            </xsl:if>
-          <xsl:text>&#160;</xsl:text></div>  <!-- nbsp -->
-          <div class='next'><xsl:text>&#160;</xsl:text>
-            <xsl:if test="count($next)&gt;0">
+                <xsl:attribute name="title">
+                  <xsl:value-of select="$prev/title"/>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'prev'"/>
+                </xsl:call-template>
+              </a>
+              <p>
+                <xsl:value-of select="$prev/title"/>
+              </p>
+            </li>
+          </xsl:if>
+          <xsl:if test="count($next)&gt;0">
+            <li class="next">
               <a accesskey="n">
                 <xsl:attribute name="href">
@@ -63,9 +67,53 @@
                   </xsl:call-template>
                 </xsl:attribute>
-                <xsl:text>Next</xsl:text>
-              </a>
-            </xsl:if>
-          </div>
-          <div class='home'>
+                <xsl:attribute name="title">
+                  <xsl:choose>
+                    <xsl:when test="local-name($next)='index'">
+                      <xsl:call-template name="gentext">
+                        <xsl:with-param name="key">Index</xsl:with-param>
+                      </xsl:call-template>
+                    </xsl:when>
+                    <xsl:otherwise>
+                      <xsl:value-of select="$next/title"/>
+                    </xsl:otherwise>
+                  </xsl:choose>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'next'"/>
+                </xsl:call-template>
+              </a>
+              <p>
+                <xsl:choose>
+                  <xsl:when test="local-name($next)='index'">
+                    <xsl:call-template name="gentext">
+                      <xsl:with-param name="key">Index</xsl:with-param>
+                    </xsl:call-template>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:value-of select="$next/title"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </p>
+            </li>
+          </xsl:if>
+            <li class="up">
+              <xsl:if test="count($up)&gt;0 and $up != $home">
+                <a accesskey="u">
+                  <xsl:attribute name="href">
+                    <xsl:call-template name="href.target">
+                      <xsl:with-param name="object" select="$up"/>
+                    </xsl:call-template>
+                  </xsl:attribute>
+                  <xsl:attribute name="title">
+                    <xsl:apply-templates select="$up" mode="object.title.markup"/>
+                  </xsl:attribute>
+                  <xsl:call-template name="navig.content">
+                    <xsl:with-param name="direction" select="'up'"/>
+                  </xsl:call-template>
+                </a>
+              </xsl:if>
+              <xsl:text>.</xsl:text>
+            </li>
+          <li class="home">
             <a accesskey="h">
               <xsl:attribute name="href">
@@ -74,13 +122,20 @@
                 </xsl:call-template>
               </xsl:attribute>
-              <xsl:text>Home</xsl:text>
+                <xsl:attribute name="title">
+                  <xsl:value-of select="$home/bookinfo/title"/>
+                  <xsl:text> - </xsl:text>
+                  <xsl:value-of select="$home/bookinfo/subtitle"/>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'home'"/>
+                </xsl:call-template>
             </a>
-          </div>
-        </div>
+          </li>
+        </ul>
       </div>
     </xsl:if>
   </xsl:template>
 
-  	<!-- Footer Navigation-->
+    <!-- Footer Navigation-->
   <xsl:template name="footer.navigation">
     <xsl:param name="prev" select="/foo"/>
@@ -93,6 +148,7 @@
     <xsl:if test="$row">
       <div class="navfooter">
-          <div class='prev'>
-            <xsl:if test="count($prev)&gt;0 and $prev != $home">
+        <ul>
+          <xsl:if test="count($prev)&gt;0 and $prev != $home">
+            <li class="prev">
               <a accesskey="p">
                 <xsl:attribute name="href">
@@ -101,13 +157,18 @@
                   </xsl:call-template>
                 </xsl:attribute>
-                <xsl:text>Prev</xsl:text>
-              </a><br/>
-              <!-- <xsl:text> </xsl:text> -->
-              <xsl:apply-templates select="$prev" mode="object.title.markup"/>
-            </xsl:if>
-            <xsl:text>&#160;</xsl:text>
-          </div> <!-- nbsp -->
-          <div class='next'><xsl:text>&#160;</xsl:text>
+                <xsl:attribute name="title">
+                  <xsl:value-of select="$prev/title"/>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'prev'"/>
+                </xsl:call-template>
+              </a>
+              <p>
+                <xsl:value-of select="$prev/title"/>
+              </p>
+            </li>
+          </xsl:if>
           <xsl:if test="count($next)&gt;0">
+            <li class="next">
               <a accesskey="n">
                 <xsl:attribute name="href">
@@ -116,34 +177,73 @@
                   </xsl:call-template>
                 </xsl:attribute>
-                <xsl:text>Next</xsl:text>
-              </a><br/>
-              <!-- <xsl:text> </xsl:text> -->
-              <xsl:apply-templates select="$next" mode="object.title.markup"/>
-            </xsl:if>
-          </div>
-          <xsl:if test="count($up)&gt;0 and $up != $home">
-            <div class='up'>
-              <a accesskey="u">
-                <xsl:attribute name="href">
-                  <xsl:call-template name="href.target">
-                    <xsl:with-param name="object" select="$up"/>
-                  </xsl:call-template>
-                </xsl:attribute>
-                <xsl:text>Up</xsl:text>
-              </a>
-            </div>
-          </xsl:if>
-          <div class='home'>
-            <xsl:if  test="$home != .">
-              <a accesskey="h">
-                <xsl:attribute name="href">
-                  <xsl:call-template name="href.target">
-                    <xsl:with-param name="object" select="$home"/>
-                  </xsl:call-template>
-                </xsl:attribute>
-                <xsl:text>Home</xsl:text>
-              </a>
-            </xsl:if>
-          </div>
+                <xsl:attribute name="title">
+                  <xsl:choose>
+                    <xsl:when test="local-name($next)='index'">
+                      <xsl:call-template name="gentext">
+                        <xsl:with-param name="key">Index</xsl:with-param>
+                      </xsl:call-template>
+                    </xsl:when>
+                    <xsl:otherwise>
+                      <xsl:value-of select="$next/title"/>
+                    </xsl:otherwise>
+                  </xsl:choose>
+                </xsl:attribute>
+                <xsl:call-template name="navig.content">
+                  <xsl:with-param name="direction" select="'next'"/>
+                </xsl:call-template>
+              </a>
+              <p>
+                <xsl:choose>
+                  <xsl:when test="local-name($next)='index'">
+                    <xsl:call-template name="gentext">
+                      <xsl:with-param name="key">Index</xsl:with-param>
+                    </xsl:call-template>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:value-of select="$next/title"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </p>
+            </li>
+          </xsl:if>
+            <li class="up">
+              <xsl:if test="count($up)&gt;0 and $up != $home">
+                <a accesskey="u">
+                  <xsl:attribute name="href">
+                    <xsl:call-template name="href.target">
+                      <xsl:with-param name="object" select="$up"/>
+                    </xsl:call-template>
+                  </xsl:attribute>
+                  <xsl:attribute name="title">
+                    <xsl:apply-templates select="$up" mode="object.title.markup"/>
+                  </xsl:attribute>
+                  <xsl:call-template name="navig.content">
+                    <xsl:with-param name="direction" select="'up'"/>
+                  </xsl:call-template>
+                </a>
+              </xsl:if>
+              <xsl:text>.</xsl:text>
+            </li>
+            <li class="home">
+              <xsl:if  test="$home != .">
+                <a accesskey="h">
+                  <xsl:attribute name="href">
+                    <xsl:call-template name="href.target">
+                      <xsl:with-param name="object" select="$home"/>
+                    </xsl:call-template>
+                  </xsl:attribute>
+                  <xsl:attribute name="title">
+                    <xsl:value-of select="$home/bookinfo/title"/>
+                    <xsl:text> - </xsl:text>
+                    <xsl:value-of select="$home/bookinfo/subtitle"/>
+                  </xsl:attribute>
+                  <xsl:call-template name="navig.content">
+                    <xsl:with-param name="direction" select="'home'"/>
+                  </xsl:call-template>
+                </a>
+              </xsl:if>
+              <xsl:text>.</xsl:text>
+            </li>
+        </ul>
       </div>
     </xsl:if>
Index: stylesheets/xhtml/lfs-sections.xsl
===================================================================
--- stylesheets/xhtml/lfs-sections.xsl	(revision 3fe8b511a872c0d5eb866ccd2603295f6ae58bbf)
+++ stylesheets/xhtml/lfs-sections.xsl	(revision 3fe8b511a872c0d5eb866ccd2603295f6ae58bbf)
@@ -0,0 +1,52 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns="http://www.w3.org/1999/xhtml"
+                version="1.0">
+
+
+   <!-- Sect1 attributes -->
+  <xsl:template match="sect1">
+    <div>
+      <xsl:choose>
+        <xsl:when test="@role">
+          <xsl:attribute name="class">
+            <xsl:value-of select="@role"/>
+          </xsl:attribute>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:attribute name="class">
+            <xsl:value-of select="name(.)"/>
+          </xsl:attribute>
+        </xsl:otherwise>
+      </xsl:choose>
+      <xsl:call-template name="language.attribute"/>
+      <xsl:call-template name="sect1.titlepage"/>
+      <xsl:apply-templates/>
+      <xsl:call-template name="process.chunk.footnotes"/>
+    </div>
+  </xsl:template>
+
+    <!-- Sect2 attributes -->
+  <xsl:template match="sect2">
+    <div>
+      <xsl:choose>
+        <xsl:when test="@role">
+          <xsl:attribute name="class">
+            <xsl:value-of select="@role"/>
+          </xsl:attribute>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:attribute name="class">
+            <xsl:value-of select="name(.)"/>
+          </xsl:attribute>
+        </xsl:otherwise>
+      </xsl:choose>
+      <xsl:call-template name="language.attribute"/>
+      <xsl:call-template name="sect2.titlepage"/>
+      <xsl:apply-templates/>
+      <xsl:call-template name="process.chunk.footnotes"/>
+    </div>
+  </xsl:template>
+
+</xsl:stylesheet>
Index: stylesheets/xhtml/lfs-titles.xsl
===================================================================
--- stylesheets/xhtml/lfs-titles.xsl	(revision 239e8ca1b71b0264115d99bb478f9d6cbf9d7774)
+++ stylesheets/xhtml/lfs-titles.xsl	(revision 3fe8b511a872c0d5eb866ccd2603295f6ae58bbf)
@@ -1,5 +1,3 @@
 <?xml version='1.0' encoding='ISO-8859-1'?>
-
-<!-- Version 0.9- Manuel Canales Esparcia <macana@lfs-es.org> -->
 
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
@@ -9,4 +7,7 @@
   <xsl:template name="part.titlepage">
     <div class="titlepage">
+      <xsl:if test="@id">
+        <a id="{@id}" name="{@id}"/>
+      </xsl:if>
       <h1 class="{name(.)}">
         <xsl:value-of select="title"/>
@@ -17,4 +18,7 @@
   <xsl:template name="chapter.titlepage">
     <div class="titlepage">
+      <xsl:if test="@id">
+        <a id="{@id}" name="{@id}"/>
+      </xsl:if>
       <h1 class="{name(.)}">
         <xsl:value-of select="title"/>
@@ -25,4 +29,18 @@
   <xsl:template name="preface.titlepage">
     <div class="titlepage">
+      <xsl:if test="@id">
+        <a id="{@id}" name="{@id}"/>
+      </xsl:if>
+      <h1 class="{name(.)}">
+        <xsl:value-of select="title"/>
+      </h1>
+    </div>
+  </xsl:template>
+
+  <xsl:template name="appendix.titlepage">
+    <div class="titlepage">
+      <xsl:if test="@id">
+        <a id="{@id}" name="{@id}"/>
+      </xsl:if>
       <h1 class="{name(.)}">
         <xsl:value-of select="title"/>
@@ -32,24 +50,12 @@
 
   <xsl:template name="sect1.titlepage">
-    <xsl:choose>
-    		<!-- I should find a better test -->
-      <xsl:when test="position() = 4">
-        <div class="titlepage">
-          <xsl:if test="@id">
-            <a id="{@id}" name="{@id}"/>
-          </xsl:if>
-          <h2 class="{name(.)}">
-            <xsl:value-of select="title"/>
-          </h2>
-        </div>
-      </xsl:when>
-      <xsl:otherwise>
-        <div class="titlepage">
-          <h1 class="{name(.)}">
-            <xsl:value-of select="title"/>
-          </h1>
-        </div>
-      </xsl:otherwise>
-    </xsl:choose>
+    <div class="titlepage">
+      <xsl:if test="@id">
+        <a id="{@id}" name="{@id}"/>
+      </xsl:if>
+      <h1 class="{name(.)}">
+        <xsl:value-of select="title"/>
+      </h1>
+    </div>
   </xsl:template>
 
@@ -62,7 +68,7 @@
             <a id="{@id}" name="{@id}"/>
           </xsl:if>
-          <h3 class="{name(.)}">
+          <h2 class="{name(.)}">
             <xsl:value-of select="title"/>
-          </h3>
+          </h2>
         </div>
       </xsl:otherwise>
@@ -78,3 +84,20 @@
   </xsl:template>
 
+    <!-- Added the role param for proper punctuation in xref calls. -->
+  <xsl:template match="*" mode="insert.title.markup">
+    <xsl:param name="purpose"/>
+    <xsl:param name="xrefstyle"/>
+    <xsl:param name="title"/>
+    <xsl:param name="role"/>
+    <xsl:choose>
+      <xsl:when test="$purpose = 'xref' and titleabbrev">
+        <xsl:apply-templates select="." mode="titleabbrev.markup"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:copy-of select="$title"/>
+        <xsl:value-of select="$role"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
 </xsl:stylesheet>
Index: stylesheets/xhtml/lfs-xref.xsl
===================================================================
--- stylesheets/xhtml/lfs-xref.xsl	(revision 3fe8b511a872c0d5eb866ccd2603295f6ae58bbf)
+++ stylesheets/xhtml/lfs-xref.xsl	(revision 3fe8b511a872c0d5eb866ccd2603295f6ae58bbf)
@@ -0,0 +1,270 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns="http://www.w3.org/1999/xhtml"
+                version="1.0">
+
+     <!-- Making a proper punctuation in xref (only for English language).-->
+  <xsl:template match="xref" name="xref">
+    <xsl:variable name="targets" select="key('id',@linkend)"/>
+    <xsl:variable name="target" select="$targets[1]"/>
+    <xsl:variable name="refelem" select="local-name($target)"/>
+    <xsl:variable name="role" select="@role"/>
+    <xsl:call-template name="check.id.unique">
+      <xsl:with-param name="linkend" select="@linkend"/>
+    </xsl:call-template>
+    <xsl:call-template name="anchor"/>
+    <xsl:choose>
+      <xsl:when test="count($target) = 0">
+        <xsl:message>
+          <xsl:text>XRef to nonexistent id: </xsl:text>
+          <xsl:value-of select="@linkend"/>
+        </xsl:message>
+        <xsl:text>???</xsl:text>
+      </xsl:when>
+      <xsl:when test="$target/@xreflabel">
+        <a>
+          <xsl:attribute name="href">
+            <xsl:call-template name="href.target">
+              <xsl:with-param name="object" select="$target"/>
+            </xsl:call-template>
+          </xsl:attribute>
+          <xsl:call-template name="xref.xreflabel">
+            <xsl:with-param name="target" select="$target"/>
+          </xsl:call-template>
+        </a>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:variable name="href">
+          <xsl:call-template name="href.target">
+            <xsl:with-param name="object" select="$target"/>
+          </xsl:call-template>
+        </xsl:variable>
+        <xsl:apply-templates select="$target" mode="xref-to-prefix"/>
+        <a href="{$href}">
+          <xsl:if test="$target/title or $target/*/title">
+            <xsl:attribute name="title">
+              <xsl:apply-templates select="$target" mode="xref-title"/>
+            </xsl:attribute>
+          </xsl:if>
+          <xsl:apply-templates select="$target" mode="xref-to">
+            <xsl:with-param name="referrer" select="."/>
+            <xsl:with-param name="role" select="$role"/>
+            <xsl:with-param name="xrefstyle">
+              <xsl:value-of select="@xrefstyle"/>
+            </xsl:with-param>
+          </xsl:apply-templates>
+        </a>
+        <xsl:apply-templates select="$target" mode="xref-to-suffix"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <xsl:template match="section|simplesect|sect1|sect2|sect3|sect4|sect5|refsect1
+          |refsect2|refsect3|refsection" mode="xref-to">
+    <xsl:param name="referrer"/>
+    <xsl:param name="xrefstyle"/>
+    <xsl:param name="role"/>
+    <xsl:apply-templates select="." mode="object.xref.markup">
+      <xsl:with-param name="purpose" select="'xref'"/>
+      <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+      <xsl:with-param name="referrer" select="$referrer"/>
+      <xsl:with-param name="role" select="$role"/>
+    </xsl:apply-templates>
+  </xsl:template>
+
+
+  <xsl:template match="*" mode="object.xref.markup">
+    <xsl:param name="purpose"/>
+    <xsl:param name="xrefstyle"/>
+    <xsl:param name="referrer"/>
+    <xsl:param name="role"/>
+    <xsl:variable name="template">
+      <xsl:choose>
+        <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')">
+          <xsl:call-template name="make.gentext.template">
+            <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+            <xsl:with-param name="purpose" select="$purpose"/>
+            <xsl:with-param name="referrer" select="$referrer"/>
+          </xsl:call-template>
+        </xsl:when>
+        <xsl:when test="starts-with(normalize-space($xrefstyle), 'template:')">
+          <xsl:value-of select="substring-after(normalize-space($xrefstyle), 'template:')"/>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:apply-templates select="." mode="object.xref.template">
+            <xsl:with-param name="purpose" select="$purpose"/>
+            <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+            <xsl:with-param name="referrer" select="$referrer"/>
+          </xsl:apply-templates>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:variable>
+    <xsl:if test="$template = ''">
+      <xsl:message>
+        <xsl:text>object.xref.markup: empty xref template</xsl:text>
+        <xsl:text> for linkend="</xsl:text>
+        <xsl:value-of select="@id"/>
+        <xsl:text>" and @xrefstyle="</xsl:text>
+        <xsl:value-of select="$xrefstyle"/>
+        <xsl:text>"</xsl:text>
+      </xsl:message>
+    </xsl:if>
+    <xsl:call-template name="substitute-markup">
+      <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="template" select="$template"/>
+      <xsl:with-param name="role" select="$role"/>
+    </xsl:call-template>
+  </xsl:template>
+  
+  <xsl:template name="substitute-markup">
+    <xsl:param name="template" select="''"/>
+    <xsl:param name="allow-anchors" select="'0'"/>
+    <xsl:param name="title" select="''"/>
+    <xsl:param name="subtitle" select="''"/>
+    <xsl:param name="label" select="''"/>
+    <xsl:param name="pagenumber" select="''"/>
+    <xsl:param name="purpose"/>
+    <xsl:param name="xrefstyle"/>
+    <xsl:param name="referrer"/>
+    <xsl:param name="role"/>
+    <xsl:choose>
+      <xsl:when test="contains($template, '%')">
+        <xsl:value-of select="substring-before($template, '%')"/>
+        <xsl:variable name="candidate"
+              select="substring(substring-after($template, '%'), 1, 1)"/>
+        <xsl:choose>
+          <xsl:when test="$candidate = 't'">
+            <xsl:apply-templates select="." mode="insert.title.markup">
+              <xsl:with-param name="purpose" select="$purpose"/>
+              <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+              <xsl:with-param name="role" select="$role"/>
+              <xsl:with-param name="title">
+                <xsl:choose>
+                  <xsl:when test="$title != ''">
+                    <xsl:copy-of select="$title"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:apply-templates select="." mode="title.markup">
+                      <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+                    </xsl:apply-templates>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:with-param>
+            </xsl:apply-templates>
+          </xsl:when>
+          <xsl:when test="$candidate = 's'">
+            <xsl:apply-templates select="." mode="insert.subtitle.markup">
+              <xsl:with-param name="purpose" select="$purpose"/>
+              <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+              <xsl:with-param name="subtitle">
+                <xsl:choose>
+                  <xsl:when test="$subtitle != ''">
+                    <xsl:copy-of select="$subtitle"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:apply-templates select="." mode="subtitle.markup">
+                      <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+                    </xsl:apply-templates>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:with-param>
+            </xsl:apply-templates>
+          </xsl:when>
+          <xsl:when test="$candidate = 'n'">
+            <xsl:apply-templates select="." mode="insert.label.markup">
+              <xsl:with-param name="purpose" select="$purpose"/>
+              <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+              <xsl:with-param name="label">
+                <xsl:choose>
+                  <xsl:when test="$label != ''">
+                    <xsl:copy-of select="$label"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:apply-templates select="." mode="label.markup"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:with-param>
+            </xsl:apply-templates>
+          </xsl:when>
+          <xsl:when test="$candidate = 'p'">
+            <xsl:apply-templates select="." mode="insert.pagenumber.markup">
+              <xsl:with-param name="purpose" select="$purpose"/>
+              <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+              <xsl:with-param name="pagenumber">
+                <xsl:choose>
+                  <xsl:when test="$pagenumber != ''">
+                    <xsl:copy-of select="$pagenumber"/>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:apply-templates select="." mode="pagenumber.markup"/>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:with-param>
+            </xsl:apply-templates>
+          </xsl:when>
+          <xsl:when test="$candidate = 'd'">
+            <xsl:apply-templates select="." mode="insert.direction.markup">
+              <xsl:with-param name="purpose" select="$purpose"/>
+              <xsl:with-param name="xrefstyle" select="$xrefstyle"/>
+              <xsl:with-param name="direction">
+                <xsl:choose>
+                  <xsl:when test="$referrer">
+                    <xsl:variable name="referent-is-below">
+                      <xsl:for-each select="preceding::xref">
+                        <xsl:if test="generate-id(.) = generate-id($referrer)">1</xsl:if>
+                      </xsl:for-each>
+                    </xsl:variable>
+                    <xsl:choose>
+                      <xsl:when test="$referent-is-below = ''">
+                        <xsl:call-template name="gentext">
+                          <xsl:with-param name="key" select="'above'"/>
+                        </xsl:call-template>
+                      </xsl:when>
+                      <xsl:otherwise>
+                        <xsl:call-template name="gentext">
+                          <xsl:with-param name="key" select="'below'"/>
+                        </xsl:call-template>
+                      </xsl:otherwise>
+                    </xsl:choose>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:message>Attempt to use %d in gentext with no referrer!</xsl:message>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </xsl:with-param>
+            </xsl:apply-templates>
+          </xsl:when>
+          <xsl:when test="$candidate = '%' ">
+            <xsl:text>%</xsl:text>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:text>%</xsl:text><xsl:value-of select="$candidate"/>
+          </xsl:otherwise>
+        </xsl:choose>
+        <!-- recurse with the rest of the template string -->
+        <xsl:variable name="rest"
+              select="substring($template,
+              string-length(substring-before($template, '%'))+3)"/>
+        <xsl:call-template name="substitute-markup">
+          <xsl:with-param name="template" select="$rest"/>
+          <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+          <xsl:with-param name="title" select="$title"/>
+          <xsl:with-param name="subtitle" select="$subtitle"/>
+          <xsl:with-param name="label" select="$label"/>
+          <xsl:with-param name="pagenumber" select="$pagenumber"/>
+          <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="role" select="$role"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:value-of select="$template"/>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+</xsl:stylesheet>
