Index: stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/pi.xsl
===================================================================
--- stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/pi.xsl	(revision c873d8072e3e1fb78b1be4ba5e3f8e3548d29694)
+++ stylesheets/lfs-xsl/docbook-xsl-snapshot/xhtml/pi.xsl	(revision c873d8072e3e1fb78b1be4ba5e3f8e3548d29694)
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="ASCII"?>
+<!--This file was created automatically by html2xhtml-->
+<!--from the HTML stylesheets.-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0">
+
+<!-- ********************************************************************
+     $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.
+
+     ******************************************************************** -->
+
+<xsl:template match="processing-instruction()">
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbhtml')">
+  <!-- nop -->
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbhtml-attribute">
+  <xsl:param name="pis" select="processing-instruction('dbhtml')"/>
+  <xsl:param name="attribute">filename</xsl:param>
+
+  <xsl:call-template name="pi-attribute">
+    <xsl:with-param name="pis" select="$pis"/>
+    <xsl:with-param name="attribute" select="$attribute"/>
+  </xsl:call-template>
+</xsl:template>
+
+<xsl:template name="dbhtml-filename">
+  <xsl:param name="pis" select="./processing-instruction('dbhtml')"/>
+  <xsl:call-template name="dbhtml-attribute">
+    <xsl:with-param name="pis" select="$pis"/>
+    <xsl:with-param name="attribute">filename</xsl:with-param>
+  </xsl:call-template>
+</xsl:template>
+
+<!--
+<xsl:template name="dbhtml-dir">
+  <xsl:param name="pis" select="./processing-instruction('dbhtml')"/>
+  <xsl:call-template name="dbhtml-attribute">
+    <xsl:with-param name="pis" select="$pis"/>
+    <xsl:with-param name="attribute">dir</xsl:with-param>
+  </xsl:call-template>
+</xsl:template>
+-->
+
+<xsl:template name="dbhtml-dir">
+  <xsl:param name="context" select="."/>
+
+  <!-- directories are now inherited from previous levels -->
+
+  <xsl:variable name="ppath">
+    <xsl:if test="$context/parent::*">
+      <xsl:call-template name="dbhtml-dir">
+        <xsl:with-param name="context" select="$context/parent::*"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:variable>
+
+  <xsl:variable name="path">
+    <xsl:call-template name="dbhtml-attribute">
+      <xsl:with-param name="pis" select="$context/processing-instruction('dbhtml')"/>
+      <xsl:with-param name="attribute">dir</xsl:with-param>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="$path = ''">
+      <xsl:if test="$ppath != ''">
+        <xsl:value-of select="$ppath"/>
+      </xsl:if>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:if test="$ppath != ''">
+        <xsl:value-of select="$ppath"/>
+        <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'">
+          <xsl:text>/</xsl:text>
+        </xsl:if>
+      </xsl:if>
+      <xsl:value-of select="$path"/>
+      <xsl:text>/</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.cmdsynopsis.list">
+  <xsl:param name="cmdsynopses"/><!-- empty node list by default -->
+  <xsl:param name="count" select="1"/>
+
+  <xsl:choose>
+    <xsl:when test="$count&gt;count($cmdsynopses)"/>
+    <xsl:otherwise>
+      <xsl:variable name="cmdsyn" select="$cmdsynopses[$count]"/>
+
+       <dt>
+       <a>
+         <xsl:attribute name="href">
+           <xsl:call-template name="object.id">
+             <xsl:with-param name="object" select="$cmdsyn"/>
+           </xsl:call-template>
+         </xsl:attribute>
+
+         <xsl:choose>
+           <xsl:when test="$cmdsyn/@xreflabel">
+             <xsl:call-template name="xref.xreflabel">
+               <xsl:with-param name="target" select="$cmdsyn"/>
+             </xsl:call-template>
+           </xsl:when>
+           <xsl:otherwise>
+             <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+               <xsl:with-param name="target" select="$cmdsyn"/>
+             </xsl:apply-templates>
+           </xsl:otherwise>
+         </xsl:choose>
+       </a>
+       </dt>
+
+        <xsl:call-template name="process.cmdsynopsis.list">
+          <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+          <xsl:with-param name="count" select="$count+1"/>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbcmdlist')">
+  <xsl:variable name="cmdsynopses" select="..//cmdsynopsis"/>
+
+  <xsl:if test="count($cmdsynopses)&lt;1">
+    <xsl:message><xsl:text>No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep?</xsl:text>
+    </xsl:message>
+  </xsl:if>
+
+  <dl>
+    <xsl:call-template name="process.cmdsynopsis.list">
+      <xsl:with-param name="cmdsynopses" select="$cmdsynopses"/>
+    </xsl:call-template>
+  </dl>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="process.funcsynopsis.list">
+  <xsl:param name="funcsynopses"/><!-- empty node list by default -->
+  <xsl:param name="count" select="1"/>
+
+  <xsl:choose>
+    <xsl:when test="$count&gt;count($funcsynopses)"/>
+    <xsl:otherwise>
+      <xsl:variable name="cmdsyn" select="$funcsynopses[$count]"/>
+
+       <dt>
+       <a>
+         <xsl:attribute name="href">
+           <xsl:call-template name="object.id">
+             <xsl:with-param name="object" select="$cmdsyn"/>
+           </xsl:call-template>
+         </xsl:attribute>
+
+         <xsl:choose>
+           <xsl:when test="$cmdsyn/@xreflabel">
+             <xsl:call-template name="xref.xreflabel">
+               <xsl:with-param name="target" select="$cmdsyn"/>
+             </xsl:call-template>
+           </xsl:when>
+           <xsl:otherwise>
+              <xsl:apply-templates select="$cmdsyn" mode="xref-to">
+                <xsl:with-param name="target" select="$cmdsyn"/>
+              </xsl:apply-templates>
+           </xsl:otherwise>
+         </xsl:choose>
+       </a>
+       </dt>
+
+        <xsl:call-template name="process.funcsynopsis.list">
+          <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+          <xsl:with-param name="count" select="$count+1"/>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+</xsl:template>
+
+<xsl:template match="processing-instruction('dbfunclist')">
+  <xsl:variable name="funcsynopses" select="..//funcsynopsis"/>
+
+  <xsl:if test="count($funcsynopses)&lt;1">
+    <xsl:message><xsl:text>No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep?</xsl:text>
+    </xsl:message>
+  </xsl:if>
+
+  <dl>
+    <xsl:call-template name="process.funcsynopsis.list">
+      <xsl:with-param name="funcsynopses" select="$funcsynopses"/>
+    </xsl:call-template>
+  </dl>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<!-- Copy well-formed external HTML content to the output. -->
+<!-- An optional <html> wrapper will be removed before content is copied 
+     to support multiple elements in output without a wrapper.
+     No other processing is done to the content. -->
+<xsl:template match="processing-instruction('dbhtml-include')">
+  <xsl:param name="href">
+    <xsl:call-template name="dbhtml-attribute">
+      <xsl:with-param name="pis" select="."/>
+      <xsl:with-param name="attribute">href</xsl:with-param>
+    </xsl:call-template>
+  </xsl:param>
+
+  <xsl:choose>
+    <xsl:when test="$href != ''">
+      <xsl:variable name="content" select="document($href,/)"/>
+      <xsl:choose>
+        <xsl:when test="$content/*">
+          <xsl:choose>
+            <xsl:when test="$content/*[1][self::html]">
+              <!-- include just the children of html wrapper -->
+              <xsl:copy-of select="$content/*[1]/node()"/>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:copy-of select="$content"/>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:message>
+            <xsl:text>ERROR: dbhtml-include processing instruction </xsl:text>
+            <xsl:text>href has no content.</xsl:text>
+          </xsl:message>
+        </xsl:otherwise>
+      </xsl:choose>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:message>
+        <xsl:text>ERROR: dbhtml-include processing instruction has </xsl:text>
+        <xsl:text>missing or empty href value.</xsl:text>
+      </xsl:message>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
