Index: stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pi.xsl
===================================================================
--- stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pi.xsl	(revision 65b29045133149ef43685da7cc2b265e2dfaf0dc)
+++ stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/pi.xsl	(revision 65b29045133149ef43685da7cc2b265e2dfaf0dc)
@@ -0,0 +1,860 @@
+<?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:fo="http://www.w3.org/1999/XSL/Format"
+                exclude-result-prefixes="doc"
+                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.
+
+     ******************************************************************** -->
+
+<doc:reference xmlns="">
+<referenceinfo>
+<releaseinfo role="meta">
+$Id$
+</releaseinfo>
+<authorgroup>
+  <author>
+    <orgname>The DocBook Project Development Team</orgname>
+  </author>
+</authorgroup>
+<copyright>
+  <year>2007</year>
+  <holder>The DocBook Project</holder>
+</copyright>
+</referenceinfo>
+<title>FO Processing Instruction Reference</title>
+
+<partintro id="partintro">
+<title>Introduction</title>
+
+<para>This is generated reference documentation for all
+  user-configurable processing instructions (PIs) in the DocBook
+  XSL stylesheets for FO output.
+  <note>
+    <para>You add these PIs at particular points in a document to
+      cause specific “exceptions” to formatting/output behavior. To
+      make global changes in formatting/output behavior across an
+      entire document, it’s better to do it by setting an
+      appropriate stylesheet parameter (if there is one).</para>
+  </note>
+</para>
+</partintro>
+</doc:reference>
+
+<!-- ==================================================================== -->
+
+<doc:pi name="dbfo_background-color" xmlns="">
+<refpurpose>Sets background color for an image</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo background-color</tag> PI before or
+    after an image (<tag>graphic</tag>, <tag>inlinegraphic</tag>,
+    <tag>imagedata</tag>, or <tag>videodata</tag> element) as a
+    sibling to the element, to set a background color for the
+    image.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo background-color="<replaceable>color</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>background-color="<replaceable>color</replaceable>"</term>
+      <listitem>
+        <para>FIXME: A color value? [In hex, as a name, or what?]</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_background-color">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'background-color'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_bgcolor" xmlns="">
+<refpurpose>Sets background color on an table row or table cell</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo bgcolor</tag> PI as child of a table row
+    or cell to set a background color for that table row or cell.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo bgcolor="<replaceable>color</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>bgcolor="<replaceable>color</replaceable>"</term>
+      <listitem>
+        <para>FIXME: A color value? [In hex, as a name, or what?]</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_bgcolor">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'bgcolor'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_float-type" xmlns="">
+<refpurpose>Specifies float behavior for a sidebar</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo float-type</tag> PI to specify the float
+    behavior for a <tag>sidebar</tag> (to cause the sidebar to be
+  displayed as a marginal note).</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo float-type="margin.note"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>float-type="margin.note"</term>
+      <listitem>
+        <para>Specifies that the <tag>sidebar</tag> should be
+          displayed as a marginal note.</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_float-type">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'float-type'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_glossary-presentation" xmlns="">
+<refpurpose>Specifies presentation style for a glossary</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo glossary-presentation</tag> PI as a child of
+    a <tag>glossary</tag> to control its presentation style.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo glossary-presentation="list"|"blocks"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>glossary-presentation="list"</term>
+      <listitem>
+        <para>Displayed the glossary as a list</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry><term>glossary-presentation="blocks"</term>
+      <listitem>
+        <para>Displays the glossary as blocks</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_glossary-presentation">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'glossary-presentation'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_glosslist-presentation" xmlns="">
+<refpurpose>Specifies presentation style for a glosslist</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo glosslist-presentation</tag> PI as a child of
+    a <tag>glosslist</tag> to control its presentation style.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo glosslist-presentation="list"|"blocks"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>glosslist-presentation="list"</term>
+      <listitem>
+        <para>Displayed the glosslist as a list</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry><term>glosslist-presentation="blocks"</term>
+      <listitem>
+        <para>Displays the glosslist as blocks</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_glosslist-presentation">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'glosslist-presentation'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_glossterm-width" xmlns="">
+<refpurpose>Specifies the glossterm width for a glossary or
+  glosslist</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo glossterm-width</tag> PI as a child of a
+    <tag>glossary</tag> or <tag>glosslist</tag> to specify the
+    width for output of <tag>glossterm</tag> instances in the
+    output.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo glossterm-width="<replaceable>width</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>glossterm-width="<replaceable>width</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies the glossterm width (in what units?)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_glossterm-width">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'glossterm-width'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_keep-together" xmlns="">
+<refpurpose>Specifies “keep” behavior for a table, example,
+  figure, or equation</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo keep-together</tag> PI as a child of a
+    formal object (<tag>table</tag>, <tag>example</tag>,
+    <tag>figure</tag>, or <tag>equation</tag>) or their informal
+    equivalents) to specify “keep” behavior for the object (to
+    allow the object to “break” across a page).</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo keep-together="auto"|"always"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>keep-together="auto"</term>
+      <listitem>
+        <para>Enables the object to break across a page</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry><term>keep-together="always"</term>
+      <listitem>
+        <para>Prevents the object from breaking across a page (the
+          default stylesheet behavior)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_keep-together">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'keep-together'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_label-width" xmlns="">
+<refpurpose>Specifies the label width for an itemizedlist,
+  orderedlist, or qandaset</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo label-width</tag> PI as a child of an
+    <tag>itemizedlist</tag>, <tag>orderedlist</tag>, or
+    <tag>qandaset</tag> to specify the width of labels.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo label-width="<replaceable>width</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>label-width="<replaceable>width</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies the label width (in what units?)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_label-width">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'label-width'"/>
+  </xsl:call-template>
+</xsl:template> 
+
+<doc:pi name="dbfo_linenumbering.everyNth" xmlns="">
+<refpurpose>Specifies the interval at which lines are numbered
+  output of verbatim environments</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo linenumbering.everyNth</tag> PI as a child
+    of a “verbatim” element – <tag>programlisting</tag>,
+    <tag>screen</tag>, <tag>synopsis</tag> — to specify
+    the interval at which lines are numbered.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo linenumbering.everyNth="<replaceable>N</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>linenumbering.everyNth="<replaceable>N</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies numbering interval; a number is
+          output before every <replaceable>N</replaceable>th line</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_linenumbering.everyNth">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis"
+      select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'linenumbering.everyNth'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_linenumbering.separator" xmlns="">
+<refpurpose>Specifies the separator text used between line numbers
+  and content in output of verbatim environments</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo linenumbering.separator</tag> PI as a child
+    of a “verbatim” element – <tag>programlisting</tag>,
+    <tag>screen</tag>, <tag>synopsis</tag> — to specify
+    the separator text output between the line numbers and content.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo linenumbering.separator="<replaceable>text</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>linenumbering.separator="<replaceable>text</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies the text (zero or more characters)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_linenumbering.separator">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis"
+      select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'linenumbering.separator'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_linenumbering.width" xmlns="">
+<refpurpose>Specifies the width set aside for line numbers in
+  output of verbatim environments</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo linenumbering.width</tag> PI as a child
+    of a “verbatim” element – <tag>programlisting</tag>,
+    <tag>screen</tag>, <tag>synopsis</tag> — to specify
+    the width set aside for line numbers.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo linenumbering.width="<replaceable>width</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>linenumbering.width="<replaceable>width</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies the width (in what units?)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_linenumbering.width">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis"
+      select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'linenumbering.width'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_list-width" xmlns="">
+<refpurpose>Specifies the width of a horizontal simplelist</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo list-width</tag> PI as a child of a
+    <tag>simplelist</tag> whose <tag class="attribute">class</tag>
+    value is <literal>horizontal</literal>, to specify the width
+    of the <tag>simplelist</tag>.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo list-width="<replaceable>width</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>list-width="<replaceable>width</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies the <tag>simplelist</tag> width (in what units?)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_list-width">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'list-width'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_list-presentation" xmlns="">
+<refpurpose>Specifies presentation style for a variablelist or
+  segmentedlist</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo list-presentation</tag> PI as a child of
+    a <tag>variablelist</tag> or <tag>segmentedlist</tag> to
+    control the presentation style for the list (to cause it, for
+    example, to be displayed as a table).</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo list-presentation="list"|"blocks"|"table"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>list-presentation="list"</term>
+      <listitem>
+        <para>Displayed the list as a list</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry><term>list-presentation="blocks"</term>
+      <listitem>
+        <para>(<tag>variablelist</tag> only) Displays the list as blocks</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry><term>list-presentation="table"</term>
+      <listitem>
+        <para>(<tag>segmentedlist</tag> only) Displays the list as a table</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_list-presentation">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'list-presentation'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_orientation" xmlns="">
+<refpurpose>Specifies the orientation for table row or cell</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo orientation</tag> PI as a child of an
+    <tag>table</tag> row or cell to specify the orientation
+    (rotation) for the row or cell.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270"</term>
+      <listitem>
+        <para>Specifies the number of degrees by which the cell or
+          row is rotated</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_orientation">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'orientation'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_pgwide" xmlns="">
+  <refpurpose>Species whether an <tag>equation</tag> or
+    <tag>example</tag> should rendered across the full width of a
+    page</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo pgwide</tag> PI as a child of an
+    <tag>equation</tag> or <tag>example</tag> to specify that the
+    content should rendered across the full width of the page.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo pgwide="0"|"1"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>pgwide="0"</term>
+      <listitem>
+        <para>If zero, the content is rendered across the current
+        text flow</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry><term>pgwide="1"</term>
+      <listitem>
+        <para>If <code>1</code> (or any non-zero value), the
+          content is rendered across the full width of the page</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_pgwide">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'pgwide'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_rotated-width" xmlns="">
+  <refpurpose>Specifies the width for a table <tag>entry</tag> or
+    <tag>row</tag></refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo rotated-width</tag> PI as a child of an
+    <tag>entry</tag> or <tag>row</tag> instance to specify the
+    width of that the <tag>entry</tag> or <tag>row</tag>; or
+    use it higher up in table to cause the width to be inherited
+    recursively down.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo rotated-width="<replaceable>width</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>rotated-width="<replaceable>width</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies the width of a row or cell (in what units?)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_rotated-width">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis"
+      select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'rotated-width'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_sidebar-width" xmlns="">
+<refpurpose>Specifies the width of a sidebar</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo sidebar-width</tag> PI as a child of a
+    <tag>sidebar</tag> to specify the width of the sidebar.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo sidebar-width="<replaceable>width</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>sidebar-width="<replaceable>width</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies the <tag>sidebar</tag> width (in what units?)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_sidebar-width">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'sidebar-width'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_table-width" xmlns="">
+<refpurpose>Specifies the width for a table or for revhistory
+  output</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo table-width</tag> PI as a child of a
+    <tag>table</tag> or <tag>revhistory</tag> instance (which is
+    rendered as a table in output) to specify the width of the
+    table in output.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo table-width="<replaceable>width</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>table-width="<replaceable>width</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies the table width (in what units?)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_table-width">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'table-width'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_term-width" xmlns="">
+<refpurpose>Specifies the term width for a variablelist</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo term-width</tag> PI as a child of a
+    <tag>variablelist</tag> to specify the width for
+    <tag>term</tag> output.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo term-width="<replaceable>width</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>term-width="<replaceable>width</replaceable>"</term>
+      <listitem>
+        <para>FIXME: Specifies the term width (in what units?)</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_term-width">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'term-width'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<doc:pi name="dbfo_toc" xmlns="">
+<refpurpose>Species whether a TOC should be generated for a qandaset</refpurpose>
+<refdescription>
+  <para>Use the <tag>dbfo toc</tag> PI as a child of a
+    <tag>jandaset</tag> to specify whether a table of contents
+    (TOC) is generated for the <tag>qandaset</tag>.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo toc="0"|"1"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>toc="0"</term>
+      <listitem>
+        <para>If zero, no TOC is generated</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry><term>toc="1"</term>
+      <listitem>
+        <para>If <code>1</code> (or any non-zero value),
+          a TOC is generated</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo_toc">
+  <xsl:param name="node" select="."/>
+  <xsl:call-template name="dbfo-attribute">
+    <xsl:with-param name="pis" select="$node/processing-instruction('dbfo')"/>
+    <xsl:with-param name="attribute" select="'toc'"/>
+  </xsl:call-template>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<doc:pi name="dbfo-need" xmlns="">
+<refpurpose>Specify a need for space (a kind of soft page break)</refpurpose>
+<refdescription>
+  <para>A “need” is a request for space on a page.  If the
+    requested space is not available, the page breaks and the
+    content that follows the need request appears on the next
+    page. If the requested space is available, then the request is
+    ignored.</para>
+</refdescription>
+  <refsynopsisdiv>
+    <synopsis><tag class="xmlpi">dbfo-need height="<replaceable>n</replaceable>"</tag></synopsis>
+    <synopsis><tag class="xmlpi">dbfo-need space-before="<replaceable>n</replaceable>"</tag></synopsis>
+  </refsynopsisdiv>
+<refparameter>
+  <variablelist>
+    <varlistentry><term>height="<replaceable>n</replaceable>"</term>
+      <listitem>
+        <para>FIXME: the amount of height(?) needed? In what units? pt?.</para>
+      </listitem>
+    </varlistentry>
+    <varlistentry><term>space-before"<replaceable>n</replaceable>"</term>
+      <listitem>
+        <para>FIXME: the amount of space needed before the
+          [something]? In what units? pt?.</para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</refparameter>
+</doc:pi>
+<xsl:template name="pi.dbfo-need">
+  <xsl:variable name="pi-height">
+    <xsl:call-template name="dbfo-attribute">
+      <xsl:with-param name="pis" select="."/>
+      <xsl:with-param name="attribute" select="'height'"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="height">
+    <xsl:choose>
+      <xsl:when test="$pi-height != ''">
+        <xsl:value-of select="$pi-height"/>
+      </xsl:when>
+      <xsl:otherwise>0pt</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:variable name="pi-before">
+    <xsl:call-template name="dbfo-attribute">
+      <xsl:with-param name="pis" select="."/>
+      <xsl:with-param name="attribute" select="'space-before'"/>
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:variable name="spacer">
+    <fo:block-container width="100%" height="{$height}">
+      <fo:block><fo:leader leader-length="0pt"/></fo:block>
+    </fo:block-container>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test="$fop.extensions != 0">
+      <!-- Doesn't work in fop -->
+    </xsl:when>
+    <xsl:when test="$pi-before != '' and
+                    not(following-sibling::listitem) and
+                    not(following-sibling::step)">
+      <fo:block space-after="0pt" space-before="{$pi-before}">
+        <xsl:copy-of select="$spacer"/>
+      </fo:block>
+    </xsl:when>
+    <xsl:when test="following-sibling::para">
+      <fo:block space-after="0pt" 
+                xsl:use-attribute-sets="normal.para.spacing">
+        <xsl:copy-of select="$spacer"/>
+      </fo:block>
+    </xsl:when>
+    <xsl:when test="following-sibling::table or
+                    following-sibling::figure or
+                    following-sibling::example or
+                    following-sibling::equation">
+      <fo:block space-after="0pt" 
+                xsl:use-attribute-sets="formal.object.properties">
+        <xsl:copy-of select="$spacer"/>
+      </fo:block>
+    </xsl:when>
+    <xsl:when test="following-sibling::informaltable or
+                    following-sibling::informalfigure or
+                    following-sibling::informalexample or
+                    following-sibling::informalequation">
+      <fo:block space-after="0pt" 
+                xsl:use-attribute-sets="informal.object.properties">
+        <xsl:copy-of select="$spacer"/>
+      </fo:block>
+    </xsl:when>
+    <xsl:when test="following-sibling::itemizedlist or
+                    following-sibling::orderedlist or
+                    following-sibling::variablelist or
+                    following-sibling::simplelist">
+      <fo:block space-after="0pt" 
+                xsl:use-attribute-sets="informal.object.properties">
+        <xsl:copy-of select="$spacer"/>
+      </fo:block>
+    </xsl:when>
+    <xsl:when test="following-sibling::listitem or
+                    following-sibling::step">
+      <fo:list-item space-after="0pt" 
+                xsl:use-attribute-sets="informal.object.properties">
+        <fo:list-item-label/>
+        <fo:list-item-body start-indent="0pt" end-indent="0pt">
+          <xsl:copy-of select="$spacer"/>
+        </fo:list-item-body>
+      </fo:list-item>
+    </xsl:when>
+    <xsl:when test="following-sibling::sect1 or
+                    following-sibling::sect2 or
+                    following-sibling::sect3 or
+                    following-sibling::sect4 or
+                    following-sibling::sect5 or
+                    following-sibling::section">
+      <fo:block space-after="0pt" 
+                xsl:use-attribute-sets="section.title.properties">
+        <xsl:copy-of select="$spacer"/>
+      </fo:block>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:block space-after="0pt" space-before="0em">
+        <xsl:copy-of select="$spacer"/>
+      </fo:block>
+    </xsl:otherwise>
+  </xsl:choose>
+
+  <xsl:choose>
+    <xsl:when test="$fop.extensions != 0">
+      <!-- Doesn't work in fop -->
+    </xsl:when>
+    <xsl:when test="following-sibling::listitem or
+                    following-sibling::step">
+      <fo:list-item space-before.precedence="force"
+                space-before="-{$height}"
+                space-after="0pt"
+                space-after.precedence="force">
+        <fo:list-item-label/>
+        <fo:list-item-body start-indent="0pt" end-indent="0pt"/>
+      </fo:list-item>
+    </xsl:when>
+    <xsl:otherwise>
+      <fo:block space-before.precedence="force"
+                space-before="-{$height}"
+                space-after="0pt"
+                space-after.precedence="force">
+      </fo:block>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="dbfo-attribute">
+  <!-- * dbfo-attribute is an interal utility template for retrieving -->
+  <!-- * pseudo-attributes/parameters from PIs -->
+  <xsl:param name="pis" select="processing-instruction('dbfo')"/>
+  <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 match="processing-instruction()">
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="processing-instruction('dbfo-need')">
+  <xsl:call-template name="pi.dbfo-need"/>
+</xsl:template>
+
+</xsl:stylesheet>
