diff --git a/doc/src/sgml/cube.sgml b/doc/src/sgml/cube.sgml
index 60c6fb6eed3f44828dafc9f907b2be19285cb2cf..ca1d0c118c8a3a217d5b92122d4fcf9b9b87a3ba 100644
--- a/doc/src/sgml/cube.sgml
+++ b/doc/src/sgml/cube.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/cube.sgml,v 1.5 2007/12/06 04:12:09 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/cube.sgml,v 1.6 2009/05/18 11:08:24 petere Exp $ -->
 
 <sect1 id="cube">
  <title>cube</title>
@@ -16,12 +16,13 @@
   <title>Syntax</title>
 
   <para>
-   The following are valid external representations for the <type>cube</>
-   type.  <replaceable>x</>, <replaceable>y</>, etc denote floating-point
-   numbers:
+   <xref linkend="cube-repr-table"> shows the valid external
+   representations for the <type>cube</>
+   type.  <replaceable>x</>, <replaceable>y</>, etc. denote
+   floating-point numbers.
   </para>
 
-  <table>
+  <table id="cube-repr-table">
    <title>Cube external representations</title>
    <tgroup cols="2">
     <tbody>
@@ -159,10 +160,10 @@ a &lt;@ b                Contained in
   </para>
 
   <para>
-   The following functions are available:
+   <xref linkend="cube-functions-table"> shows the available functions.
   </para>
 
-  <table>
+  <table id="cube-functions-table">
    <title>Cube functions</title>
    <tgroup cols="2">
     <tbody>
diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml
index 33ece2f3ecf4d5a9b6640449c6882fa825ab3be8..ade4caf4c1a9f82b68daf061955568ca6ae587c3 100644
--- a/doc/src/sgml/ecpg.sgml
+++ b/doc/src/sgml/ecpg.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.88 2009/04/27 16:27:35 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.89 2009/05/18 11:08:24 petere Exp $ -->
 
 <chapter id="ecpg">
  <title><application>ECPG</application> - Embedded <acronym>SQL</acronym> in C</title>
@@ -1137,8 +1137,9 @@ date PGTYPESdate_from_asc(char *str, char **endptr);
         currently no variable to change that within ecpg.
        </para>
        <para>
-        The following input formats are allowed:
-        <table>
+        <xref linkend="ecpg-pgtypesdate-from-asc-table"> shows the allowed input formats.
+       </para>
+        <table id="ecpg-pgtypesdate-from-asc-table">
          <title>Valid input formats for <function>PGTYPESdate_from_asc</function></title>
          <tgroup cols="2">
           <thead>
@@ -1219,7 +1220,6 @@ date PGTYPESdate_from_asc(char *str, char **endptr);
           </tbody>
          </tgroup>
         </table>
-       </para>
       </listitem>
      </varlistentry>
 
@@ -1392,10 +1392,11 @@ int PGTYPESdate_fmt_asc(date dDate, char *fmtstring, char *outbuf);
         All other characters are copied 1:1 to the output string.
        </para>
        <para>
-        The following table indicates a few possible formats. This will give
+        <xref linkend="ecpg-pgtypesdate-fmt-asc-example-table"> indicates a few possible formats. This will give
         you an idea of how to use this function. All output lines are based on
-        the same date: November, 23rd, 1959.
-        <table>
+        the same date: November 23, 1959.
+       </para>
+        <table id="ecpg-pgtypesdate-fmt-asc-example-table">
          <title>Valid input formats for <function>PGTYPESdate_fmt_asc</function></title>
          <tgroup cols="2">
           <thead>
@@ -1456,7 +1457,6 @@ int PGTYPESdate_fmt_asc(date dDate, char *fmtstring, char *outbuf);
           </tbody>
          </tgroup>
         </table>
-       </para>
       </listitem>
      </varlistentry>
 
@@ -1483,9 +1483,10 @@ int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str);
         day.
        </para>
        <para>
-        The following table indicates a few possible formats. This will give
+        <xref linkend="ecpg-rdefmtdate-example-table"> indicates a few possible formats. This will give
         you an idea of how to use this function.
-        <table>
+       </para>
+        <table id="ecpg-rdefmtdate-example-table">
          <title>Valid input formats for <function>rdefmtdate</function></title>
          <tgroup cols="3">
           <thead>
@@ -1564,7 +1565,6 @@ int PGTYPESdate_defmt_asc(date *d, char *fmt, char *str);
           </tbody>
          </tgroup>
         </table>
-       </para>
       </listitem>
      </varlistentry>
     </variablelist>
@@ -1612,8 +1612,9 @@ timestamp PGTYPEStimestamp_from_asc(char *str, char **endptr);
         specifiers are silently discarded.
        </para>
        <para>
-        The following table contains a few examples for input strings:
-        <table>
+        <xref linkend="ecpg-pgtypestimestamp-from-asc-example-table"> contains a few examples for input strings.
+       </para>
+        <table id="ecpg-pgtypestimestamp-from-asc-example-table">
          <title>Valid input formats for <function>PGTYPEStimestamp_from_asc</function></title>
          <tgroup cols="2">
           <thead>
@@ -1642,7 +1643,6 @@ timestamp PGTYPEStimestamp_from_asc(char *str, char **endptr);
           </tbody>
          </tgroup>
         </table>
-       </para>
       </listitem>
      </varlistentry>
 
diff --git a/doc/src/sgml/isn.sgml b/doc/src/sgml/isn.sgml
index 8d4c8fd3d70575f52f91ec151912881586e81ba1..8469a98825a7b8f115003d461e2ee74da4422b7e 100644
--- a/doc/src/sgml/isn.sgml
+++ b/doc/src/sgml/isn.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/isn.sgml,v 1.4 2007/12/10 05:32:51 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/isn.sgml,v 1.5 2009/05/18 11:08:24 petere Exp $ -->
 
 <sect1 id="isn">
  <title>isn</title>
@@ -210,11 +210,12 @@
   <para>
    The <filename>isn</> module provides the standard comparison operators,
    plus btree and hash indexing support for all these datatypes.  In
-   addition there are several specialized functions.  In this table,
-   <type>isn</> means any one of the module's data types:
+   addition there are several specialized functions; shown in <xref linkend="isn-functions">.
+   In this table,
+   <type>isn</> means any one of the module's data types.
   </para>
 
-  <table>
+  <table id="isn-functions">
    <title><filename>isn</> functions</title>
    <tgroup cols="3">
     <thead>
diff --git a/doc/src/sgml/pgbuffercache.sgml b/doc/src/sgml/pgbuffercache.sgml
index ef659ae12a1be12b138c74124079c7a40e4fc2fe..a80a910d67ba132d0a2d26640436f9a3e9fb90fe 100644
--- a/doc/src/sgml/pgbuffercache.sgml
+++ b/doc/src/sgml/pgbuffercache.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/pgbuffercache.sgml,v 2.4 2009/04/27 16:27:36 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/pgbuffercache.sgml,v 2.5 2009/05/18 11:08:24 petere Exp $ -->
 
 <sect1 id="pgbuffercache">
  <title>pg_buffercache</title>
@@ -28,10 +28,10 @@
   <title>The <structname>pg_buffercache</structname> view</title>
 
   <para>
-   The definitions of the columns exposed by the view are:
+   The definitions of the columns exposed by the view are shown in <xref linkend="pgbuffercache-columns">.
   </para>
 
-  <table>
+  <table id="pgbuffercache-columns">
    <title><structname>pg_buffercache</> Columns</title>
 
    <tgroup cols="4">
diff --git a/doc/src/sgml/pgcrypto.sgml b/doc/src/sgml/pgcrypto.sgml
index 7802b3483ae926b6ab2cf86cf16c2307d4c931ba..026dccb97d9e51d3e133c15ed03d462d67e9b398 100644
--- a/doc/src/sgml/pgcrypto.sgml
+++ b/doc/src/sgml/pgcrypto.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/pgcrypto.sgml,v 1.6 2008/01/17 14:34:45 mha Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/pgcrypto.sgml,v 1.7 2009/05/18 11:08:24 petere Exp $ -->
 
 <sect1 id="pgcrypto">
  <title>pgcrypto</title>
@@ -217,10 +217,11 @@
     too high a count the time to calculate a hash may be several years
     &mdash; which is somewhat impractical.  If the <parameter>iter_count</>
     parameter is omitted, the default iteration count is used.
-    Allowed values for <parameter>iter_count</> depend on the algorithm:
+    Allowed values for <parameter>iter_count</> depend on the algorithm and
+    are shown in <xref linkend="pgcrypto-icfc-table">.
    </para>
 
-   <table>
+   <table id="pgcrypto-icfc-table">
     <title>Iteration counts for <function>crypt()</></title>
     <tgroup cols="4">
      <thead>
@@ -262,7 +263,7 @@
    </para>
 
    <para>
-    Here is a table that gives an overview of the relative slowness
+    <xref linkend="pgcrypto-hash-speed-table"> gives an overview of the relative slowness
     of different hashing algorithms.
     The table shows how much time it would take to try all
     combinations of characters in an 8-character password, assuming
@@ -273,7 +274,7 @@
     <function>gen_salt</function>.
    </para>
 
-   <table>
+   <table id="pgcrypto-hash-speed-table">
     <title>Hash algorithm speeds</title>
     <tgroup cols="4">
      <thead>
@@ -1224,8 +1225,7 @@
    <filename>pgcrypto</filename> uses code from the following sources:
   </para>
 
-  <table>
-   <title>Credits</title>
+  <informaltable>
    <tgroup cols="3">
     <thead>
      <row>
@@ -1277,7 +1277,7 @@
      </row>
     </tbody>
    </tgroup>
-  </table>
+  </informaltable>
  </sect2>
 
 </sect1>
diff --git a/doc/src/sgml/pgrowlocks.sgml b/doc/src/sgml/pgrowlocks.sgml
index 6fe56aa4df5ab556667797ba51af0569d8f60c85..f2f58dbd3c85210dad98e7559d89572b1ebd8b5d 100644
--- a/doc/src/sgml/pgrowlocks.sgml
+++ b/doc/src/sgml/pgrowlocks.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/pgrowlocks.sgml,v 1.4 2007/12/10 05:32:51 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/pgrowlocks.sgml,v 1.5 2009/05/18 11:08:24 petere Exp $ -->
 
 <sect1 id="pgrowlocks">
  <title>pgrowlocks</title>
@@ -15,17 +15,17 @@
  <sect2>
   <title>Overview</title>
 
-  <synopsis>
+<synopsis>
 pgrowlocks(text) returns setof record
-  </synopsis>
+</synopsis>
 
   <para>
    The parameter is the name of a table.  The result is a set of records,
    with one row for each locked row within the table.  The output columns
-   are:
+   are shown in <xref linkend="pgrowlocks-columns">.
   </para>
 
-  <table>
+  <table id="pgrowlocks-columns">
    <title><function>pgrowlocks</> output columns</title>
 
    <tgroup cols="3">
diff --git a/doc/src/sgml/pgstatstatements.sgml b/doc/src/sgml/pgstatstatements.sgml
index 93cda9f406d41630e4a562e11dfca87bd14c8b3b..67e7256a4e415fdf7a36dcb42adcbee038dcd9ae 100644
--- a/doc/src/sgml/pgstatstatements.sgml
+++ b/doc/src/sgml/pgstatstatements.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstatstatements.sgml,v 1.1 2009/01/04 22:19:59 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstatstatements.sgml,v 1.2 2009/05/18 11:08:24 petere Exp $ -->
 
 <sect1 id="pgstatstatements">
  <title>pg_stat_statements</title>
@@ -27,10 +27,10 @@
    named <structname>pg_stat_statements</>.  This view contains one row for
    each distinct query text, database ID, and user ID (up to the maximum
    number of distinct statements that the module can track).  The columns
-   of the view are:
+   of the view are shown in <xref linkend="pgstatstatements-columns">.
   </para>
 
-  <table>
+  <table id="pgstatstatements-columns">
    <title><structname>pg_stat_statements</> columns</title>
 
    <tgroup cols="4">
diff --git a/doc/src/sgml/pgstattuple.sgml b/doc/src/sgml/pgstattuple.sgml
index f3a74181cf3c9b8027c7e0cd2c3e5e40b4112927..c50a777bc50f172f44bd3aa1454ec1a123f5a46b 100644
--- a/doc/src/sgml/pgstattuple.sgml
+++ b/doc/src/sgml/pgstattuple.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstattuple.sgml,v 1.4 2008/03/21 03:23:30 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/pgstattuple.sgml,v 1.5 2009/05/18 11:08:24 petere Exp $ -->
 
 <sect1 id="pgstattuple">
  <title>pgstattuple</title>
@@ -28,8 +28,7 @@
       to determine whether vacuum is necessary or not.  The argument is the
       target relation's name (optionally schema-qualified).
       For example:
-     </para>
-     <programlisting>
+<programlisting>
 test=> SELECT * FROM pgstattuple('pg_catalog.pg_proc');
 -[ RECORD 1 ]------+-------
 table_len          | 458752
@@ -41,13 +40,11 @@ dead_tuple_len     | 3157
 dead_tuple_percent | 0.69
 free_space         | 8932
 free_percent       | 1.95
-     </programlisting>
-
-    <para>
-     The output columns are:
+</programlisting>
+     The output columns are described in <xref linkend="pgstattuple-columns">.
     </para>
 
-    <table>
+    <table id="pgstattuple-columns">
      <title><function>pgstattuple</function> output columns</title>
      <tgroup cols="3">
       <thead>
diff --git a/doc/src/sgml/seg.sgml b/doc/src/sgml/seg.sgml
index 4c63481887d8c8169be741096925d88766a1f369..2558b0d5a51f743af49d051068839d784fb9b5a6 100644
--- a/doc/src/sgml/seg.sgml
+++ b/doc/src/sgml/seg.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/seg.sgml,v 1.4 2007/12/06 04:12:10 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/seg.sgml,v 1.5 2009/05/18 11:08:24 petere Exp $ -->
 
 <sect1 id="seg">
  <title>seg</title>
@@ -89,13 +89,13 @@ test=> select '6.25 .. 6.50'::seg as "pH";
   </para>
 
   <para>
-   In the following table, <replaceable>x</>, <replaceable>y</>, and
+   In <xref linkend="seg-repr-table">, <replaceable>x</>, <replaceable>y</>, and
    <replaceable>delta</> denote
    floating-point numbers.  <replaceable>x</> and <replaceable>y</>, but
-   not <replaceable>delta</>, can be preceded by a certainty indicator:
+   not <replaceable>delta</>, can be preceded by a certainty indicator.
   </para>
 
-  <table>
+  <table id="seg-repr-table">
    <title><type>seg</> external representations</title>
    <tgroup cols="2">
     <tbody>
diff --git a/doc/src/sgml/xml2.sgml b/doc/src/sgml/xml2.sgml
index 751b1bcdd1d29adcb789c98708186c83d0078031..9dc7dca8c931571ba15be588d4eaf77ef50b521f 100644
--- a/doc/src/sgml/xml2.sgml
+++ b/doc/src/sgml/xml2.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/xml2.sgml,v 1.6 2009/04/27 16:27:36 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/xml2.sgml,v 1.7 2009/05/18 11:08:24 petere Exp $ -->
 
 <sect1 id="xml2">
  <title>xml2</title>
@@ -34,11 +34,12 @@
   <title>Description of functions</title>
 
   <para>
+   <xref linkend="xml2-functions-table"> shows the functions provided by this module.
    These functions provide straightforward XML parsing and XPath queries.
    All arguments are of type <type>text</>, so for brevity that is not shown.
   </para>
 
-  <table>
+  <table id="xml2-functions-table">
    <title>Functions</title>
    <tgroup cols="2">
     <tbody>