[yelp-xsl] Clean up tests



commit 5df5b3aacf4728a993fe5e23f54af0abe563efcc
Author: Shaun McCance <shaunm redhat com>
Date:   Wed Dec 30 21:27:54 2020 -0500

    Clean up tests

 .gitignore                                     |   37 +-
 test/Makefile.am                               |    1 -
 test/colors/Makefile                           |    5 -
 test/colors/README                             |   11 +
 test/colors/build.sh                           |    5 +
 test/docbook/README                            |   10 +
 test/docbook/build.sh                          |    8 +
 test/docbook/source/bibliography.xml           |   77 +
 test/docbook/source/blocks.xml                 |  486 ++++++
 test/docbook/source/cals-tables.xml            |  322 ++++
 test/docbook/source/classsynopsis.xml          |  214 +++
 test/docbook/source/funcsynopsis.xml           |  131 ++
 test/docbook/source/glossary.xml               |   42 +
 test/docbook/source/idx.xml                    |   26 +
 test/docbook/source/index.docbook              |   62 +
 test/docbook/source/inline.xml                 |  431 +++++
 test/docbook/source/lists.xml                  |  223 +++
 test/docbook/source/reference.xml              |   36 +
 test/lipsum/README                             |   26 -
 test/mallard/README                            |   13 +
 test/mallard/build.sh                          |   14 +
 test/{lipsum => mallard/source}/index.page     |    0
 test/{lipsum => mallard/source}/note1.page     |    0
 test/{lipsum => mallard/source}/task1.page     |    0
 test/syntax/Makefile                           |   11 -
 test/syntax/README                             |    9 +
 test/syntax/build.sh                           |   28 +
 test/syntax/{ => source}/code/actionscript     |    0
 test/syntax/{ => source}/code/apache           |    0
 test/syntax/{ => source}/code/asciidoc         |    0
 test/syntax/{ => source}/code/awk              |    0
 test/syntax/{ => source}/code/bash             |    0
 test/syntax/{ => source}/code/clojure          |    0
 test/syntax/{ => source}/code/cmake            |    0
 test/syntax/{ => source}/code/cpp              |    0
 test/syntax/{ => source}/code/cs               |    0
 test/syntax/{ => source}/code/css              |    0
 test/syntax/{ => source}/code/d                |    0
 test/syntax/{ => source}/code/diff             |    0
 test/syntax/{ => source}/code/django           |    0
 test/syntax/{ => source}/code/dockerfile       |    0
 test/syntax/{ => source}/code/dos              |    0
 test/syntax/{ => source}/code/ducktype         |    0
 test/syntax/{ => source}/code/erb              |    0
 test/syntax/{ => source}/code/fsharp           |    0
 test/syntax/{ => source}/code/go               |    0
 test/syntax/{ => source}/code/haml             |    0
 test/syntax/{ => source}/code/haskell          |    0
 test/syntax/{ => source}/code/http             |    0
 test/syntax/{ => source}/code/ini              |    0
 test/syntax/{ => source}/code/java             |    0
 test/syntax/{ => source}/code/javascript       |    0
 test/syntax/{ => source}/code/json             |    0
 test/syntax/{ => source}/code/lisp             |    0
 test/syntax/{ => source}/code/lua              |    0
 test/syntax/{ => source}/code/makefile         |    0
 test/syntax/{ => source}/code/markdown         |    0
 test/syntax/{ => source}/code/matlab           |    0
 test/syntax/{ => source}/code/nginx            |    0
 test/syntax/{ => source}/code/objectivec       |    0
 test/syntax/{ => source}/code/perl             |    0
 test/syntax/{ => source}/code/php              |    0
 test/syntax/{ => source}/code/python           |    0
 test/syntax/{ => source}/code/r                |    0
 test/syntax/{ => source}/code/ruby             |    0
 test/syntax/{ => source}/code/rust             |    0
 test/syntax/{ => source}/code/scala            |    0
 test/syntax/{ => source}/code/scheme           |    0
 test/syntax/{ => source}/code/shell            |    0
 test/syntax/{ => source}/code/smalltalk        |    0
 test/syntax/{ => source}/code/sql              |    0
 test/syntax/{ => source}/code/tcl              |    0
 test/syntax/{ => source}/code/tex              |    0
 test/syntax/{ => source}/code/vala             |    0
 test/syntax/{ => source}/code/xml              |    0
 test/syntax/{ => source}/code/xquery           |    0
 test/syntax/{ => source}/code/yaml             |    0
 test/syntax/{ => source}/dita.dita             |    0
 test/syntax/{ => source}/docbook.docbook       |    0
 test/syntax/{ => source}/mallard.page          |    0
 test/testbook/Makefile                         |   26 -
 test/testbook/testbook.xml                     | 2043 ------------------------
 test/testdoc1/AUTHORS                          |    1 -
 test/testdoc1/COPYING                          |  504 ------
 test/testdoc1/COPYING-DOCS                     |  355 ----
 test/testdoc1/ChangeLog                        |    0
 test/testdoc1/INSTALL                          |  182 ---
 test/testdoc1/Makefile.am                      |    4 -
 test/testdoc1/NEWS                             |    0
 test/testdoc1/NO-AUTO-GEN                      |    0
 test/testdoc1/README                           |    0
 test/testdoc1/autogen.sh                       |   22 -
 test/testdoc1/configure.in                     |   10 -
 test/testdoc1/help/Makefile.am                 |    2 -
 test/testdoc1/help/testdoc1/C/fdl-appendix.xml |  667 --------
 test/testdoc1/help/testdoc1/C/legal.xml        |   76 -
 test/testdoc1/help/testdoc1/C/testdoc1.xml     |  544 -------
 test/testdoc1/help/testdoc1/Makefile.am        |    3 -
 test/testdoc1/help/testdoc1/testdoc1.omf.in    |   17 -
 test/testdocs/Makefile                         |   37 -
 test/testdocs/README                           |   19 -
 test/testdocs/admonitions.001.xml              |   60 -
 test/testdocs/article.001.xml                  |   25 -
 test/testdocs/article.002.xml                  |   25 -
 test/testdocs/article.003.xml                  |   76 -
 test/testdocs/article.004.xml                  |   47 -
 test/testdocs/article.005.xml                  |   64 -
 test/testdocs/article.006.xml                  |   68 -
 test/testdocs/author.001.xml                   |   40 -
 test/testdocs/author.002.xml                   |   48 -
 test/testdocs/bibliography.001.xml             |  192 ---
 test/testdocs/bibliography.002.xml             |  182 ---
 test/testdocs/bibliography.003.xml             |   49 -
 test/testdocs/bibliography.004.xml             |   51 -
 test/testdocs/bibliography.005.xml             |   89 --
 test/testdocs/bibliolist.001.xml               |   58 -
 test/testdocs/blockinfo.001.xml                |   26 -
 test/testdocs/blockinfo.002.xml                |   49 -
 test/testdocs/blockquote.001.xml               |   46 -
 test/testdocs/book.001.xml                     |  251 ---
 test/testdocs/book.002.xml                     |   56 -
 test/testdocs/book.003.xml                     |  138 --
 test/testdocs/book.004.xml                     |   24 -
 test/testdocs/book.005.xml                     |   48 -
 test/testdocs/book.006.xml                     |   30 -
 test/testdocs/book.007.xml                     |   33 -
 test/testdocs/book.008.xml                     |   34 -
 test/testdocs/bookinfo.001.xml                 |   84 -
 test/testdocs/bridgehead.001.xml               |   43 -
 test/testdocs/calloutlist.001.xml              |   50 -
 test/testdocs/calloutlist.002.xml              |  144 --
 test/testdocs/calloutlist.003.xml              |  156 --
 test/testdocs/changebars.001.xml               |   24 -
 test/testdocs/chapter.001.xml                  |   41 -
 test/testdocs/chapter.002.xml                  |   17 -
 test/testdocs/classsynopsis.001.xml            |   42 -
 test/testdocs/classsynopsis.x001.xml           |   64 -
 test/testdocs/cmdsynopsis.001.xml              |  156 --
 test/testdocs/cmdsynopsis.002.xml              |   39 -
 test/testdocs/cmdsynopsis.003.xml              |   48 -
 test/testdocs/co.001.xml                       |   30 -
 test/testdocs/db2html.xsl                      |   36 -
 test/testdocs/dir.001.xml                      |   20 -
 test/testdocs/docbook-43.001.xml               |  114 --
 test/testdocs/draft.001.xml                    |   56 -
 test/testdocs/emphasis.001.xml                 |   26 -
 test/testdocs/epigraph.001.xml                 |   24 -
 test/testdocs/equation.001.xml                 |   24 -
 test/testdocs/equation.002.xml                 |   24 -
 test/testdocs/equation.003.xml                 |   24 -
 test/testdocs/equation.004.xml                 |   68 -
 test/testdocs/example.001.xml                  |   19 -
 test/testdocs/extensions.001.xml               |   81 -
 test/testdocs/extensions.002.xml               |   23 -
 test/testdocs/extensions.003.xml               |   47 -
 test/testdocs/extensions.004.xml               |   35 -
 test/testdocs/figure.001.xml                   |   48 -
 test/testdocs/figure.002.xml                   |   49 -
 test/testdocs/figure.003.xml                   |   41 -
 test/testdocs/figure.004.xml                   |   47 -
 test/testdocs/figure.005.xml                   |   30 -
 test/testdocs/firstterm.001.xml                |   17 -
 test/testdocs/footnote.001.xml                 |   36 -
 test/testdocs/footnote.002.xml                 |   49 -
 test/testdocs/footnote.003.xml                 |   68 -
 test/testdocs/formalpara.001.xml               |   17 -
 test/testdocs/formalpara.002.xml               |   17 -
 test/testdocs/formalpara.003.xml               |  115 --
 test/testdocs/funcsynopsis.001.xml             |  185 ---
 test/testdocs/funcsynopsis.x001.xml            |   51 -
 test/testdocs/glossary.001.xml                 |  287 ----
 test/testdocs/glossary.002.data.xml            |   28 -
 test/testdocs/glossary.002.xml                 |   23 -
 test/testdocs/glossary.003.xml                 |   35 -
 test/testdocs/imagelib.001.xml                 |   61 -
 test/testdocs/imageobjectco.001.xml            |   56 -
 test/testdocs/index.001.xml                    |   47 -
 test/testdocs/index.002.xml                    |   46 -
 test/testdocs/index.003.xml                    |   24 -
 test/testdocs/index.x001.xml                   |   65 -
 test/testdocs/indexterm.001.xml                |  284 ----
 test/testdocs/indexterm.002.xml                |  705 --------
 test/testdocs/indexterm.003.xml                |   31 -
 test/testdocs/indexterm.004.xml                |   51 -
 test/testdocs/indexterm.005.xml                |   32 -
 test/testdocs/informalequation-mml.001.xml     |   21 -
 test/testdocs/informaltable.001.xml            |   38 -
 test/testdocs/informaltable.002.xml            |   50 -
 test/testdocs/informaltable.003.xml            |   52 -
 test/testdocs/informaltable.004.xml            |   49 -
 test/testdocs/informaltable.005.xml            |   38 -
 test/testdocs/informaltable.006.xml            |   48 -
 test/testdocs/informaltable.007.xml            |   61 -
 test/testdocs/informaltable.008.xml            |   52 -
 test/testdocs/informaltable.009.xml            |   46 -
 test/testdocs/informaltable.010.xml            |   45 -
 test/testdocs/informaltable.011.xml            |   44 -
 test/testdocs/informaltable.012.xml            |   36 -
 test/testdocs/informaltable.013.xml            |   29 -
 test/testdocs/informaltable.014.xml            |   54 -
 test/testdocs/informaltable.015.xml            |   39 -
 test/testdocs/informaltable.016.xml            |   48 -
 test/testdocs/informaltable.017.xml            |   72 -
 test/testdocs/informaltable.018.xml            |   36 -
 test/testdocs/inline.001.xml                   |   27 -
 test/testdocs/inline.002.xml                   |   29 -
 test/testdocs/inline.x001.xml                  |   94 --
 test/testdocs/itemizedlist.001.xml             |   53 -
 test/testdocs/itemizedlist.002.xml             |   38 -
 test/testdocs/itemizedlist.003.xml             |   76 -
 test/testdocs/itemizedlist.004.xml             |   21 -
 test/testdocs/itemizedlist.005.xml             |   27 -
 test/testdocs/itemizedlist.006.xml             |   39 -
 test/testdocs/legalnotice.001.xml              |   30 -
 test/testdocs/lineannotation.001.xml           |   21 -
 test/testdocs/link.001.xml                     |   36 -
 test/testdocs/literallayout.001.xml            |   19 -
 test/testdocs/literallayout.002.xml            |   21 -
 test/testdocs/literallayout.003.xml            |   25 -
 test/testdocs/lot.001.xml                      |   56 -
 test/testdocs/mathml.001.xml                   |   18 -
 test/testdocs/mediaobject.001.xml              |   55 -
 test/testdocs/mediaobject.002.xml              |   46 -
 test/testdocs/mediaobjectco.001.xml            |   33 -
 test/testdocs/mediaobjectco.002.xml            |  212 ---
 test/testdocs/methodsynopsis.001.xml           |   55 -
 test/testdocs/note.001.xml                     |   18 -
 test/testdocs/olink.001.xml                    |   22 -
 test/testdocs/orderedlist.001.xml              |   38 -
 test/testdocs/orderedlist.002.xml              |   38 -
 test/testdocs/orderedlist.003.xml              |   33 -
 test/testdocs/part.001.xml                     |   62 -
 test/testdocs/personname.001.xml               |   16 -
 test/testdocs/procedure.001.xml                |   44 -
 test/testdocs/procedure.002.xml                |   45 -
 test/testdocs/procedure.003.xml                |   19 -
 test/testdocs/productionset.001.xml            |   66 -
 test/testdocs/productionset.002.xml            |   27 -
 test/testdocs/productionset.003.xml            |   30 -
 test/testdocs/productionset.004.xml            |   53 -
 test/testdocs/productionset.005.xml            |   89 --
 test/testdocs/productionset.006.xml            |  809 ----------
 test/testdocs/profile.001.xml                  |   24 -
 test/testdocs/programlisting.001.xml           |   21 -
 test/testdocs/programlisting.002.xml           |   19 -
 test/testdocs/programlisting.003.xml           |   45 -
 test/testdocs/programlisting.004.xml           |   28 -
 test/testdocs/programlisting.005.xml           |   29 -
 test/testdocs/programlisting.006.xml           |   18 -
 test/testdocs/programlistingco.001.xml         |   80 -
 test/testdocs/programlistingco.002.xml         |  137 --
 test/testdocs/protocol.001.xml                 |   20 -
 test/testdocs/pubsnumber.xml                   |   16 -
 test/testdocs/qandaset.001.xml                 |   45 -
 test/testdocs/qandaset.002.xml                 |   35 -
 test/testdocs/qandaset.003.xml                 |   92 --
 test/testdocs/qandaset.004.xml                 |   27 -
 test/testdocs/qandaset.005.xml                 |   33 -
 test/testdocs/refentry.001.xml                 |   25 -
 test/testdocs/refentry.002.xml                 |   94 --
 test/testdocs/refentry.003.xml                 |   65 -
 test/testdocs/refentry.004.xml                 |   68 -
 test/testdocs/refentry.005.xml                 |   47 -
 test/testdocs/refentry.006.xml                 |  507 ------
 test/testdocs/refentry.007.xml                 |  340 ----
 test/testdocs/refentry.008.xml                 |   34 -
 test/testdocs/refentry.009.xml                 |  147 --
 test/testdocs/refentry.010.xml                 |   29 -
 test/testdocs/reference.001.xml                |   60 -
 test/testdocs/reference.002.xml                |   94 --
 test/testdocs/remark.001.xml                   |   22 -
 test/testdocs/remark.002.xml                   |   20 -
 test/testdocs/revhistory.001.xml               |   86 -
 test/testdocs/screen.001.xml                   |   19 -
 test/testdocs/sect1.001.xml                    |   53 -
 test/testdocs/sect1.002.xml                    |   56 -
 test/testdocs/section.001.xml                  |   55 -
 test/testdocs/section.002.xml                  |   56 -
 test/testdocs/section.003.xml                  |   20 -
 test/testdocs/section.004.xml                  |   58 -
 test/testdocs/section.005.xml                  |   92 --
 test/testdocs/segmentedlist.001.xml            |   21 -
 test/testdocs/segmentedlist.002.xml            |   23 -
 test/testdocs/segmentedlist.003.xml            |   23 -
 test/testdocs/set.001.xml                      |   31 -
 test/testdocs/sgmltag.xml                      |   30 -
 test/testdocs/sidebar.001.xml                  |   48 -
 test/testdocs/simplelist.001.xml               |   53 -
 test/testdocs/simplelist.x001.xml              |   59 -
 test/testdocs/simplemsgentry.xml               |   25 -
 test/testdocs/simplesect.001.xml               |   41 -
 test/testdocs/stamp.001.xml                    |   26 -
 test/testdocs/stamp.002.xml                    |   31 -
 test/testdocs/stamp.003.xml                    |   30 -
 test/testdocs/stamp.004.xml                    |   30 -
 test/testdocs/stamp.005.xml                    |   28 -
 test/testdocs/stamp.006.xml                    |   29 -
 test/testdocs/stamp.007.xml                    |   29 -
 test/testdocs/stamp.008.xml                    |   27 -
 test/testdocs/stamp.009.xml                    |   28 -
 test/testdocs/stamp.010.xml                    |   28 -
 test/testdocs/stamp.011.xml                    |   31 -
 test/testdocs/stamp.012.xml                    |   41 -
 test/testdocs/stamp.013.xml                    |   88 -
 test/testdocs/stepalternatives.001.xml         |   46 -
 test/testdocs/subtitle.001.xml                 |   32 -
 test/testdocs/superscript.001.xml              |   17 -
 test/testdocs/svg-001.xml                      |   11 -
 test/testdocs/svg.001.xml                      |   39 -
 test/testdocs/svg.002.xml                      |   31 -
 test/testdocs/table.001.xml                    |   31 -
 test/testdocs/table.002.xml                    |   37 -
 test/testdocs/table.003.xml                    |   38 -
 test/testdocs/table.004.xml                    |   30 -
 test/testdocs/table.005.xml                    |   35 -
 test/testdocs/table.006.xml                    |  233 ---
 test/testdocs/table.007.xml                    |   38 -
 test/testdocs/table.008.xml                    |   65 -
 test/testdocs/table.009.xml                    |   97 --
 test/testdocs/table.010.xml                    |   30 -
 test/testdocs/table.011.xml                    |   32 -
 test/testdocs/table.012.xml                    |   50 -
 test/testdocs/table.013.xml                    |   33 -
 test/testdocs/table.014.xml                    |   50 -
 test/testdocs/table.015.xml                    |  127 --
 test/testdocs/table.016.xml                    |   68 -
 test/testdocs/table.017.xml                    |   56 -
 test/testdocs/table.018.xml                    |   62 -
 test/testdocs/table.x001.xml                   |   68 -
 test/testdocs/template.xml                     |   17 -
 test/testdocs/textobject.001.xml               |   19 -
 test/testdocs/textobject.002.xml               |   19 -
 test/testdocs/title.001.xml                    |   32 -
 test/testdocs/toc.001.xml                      |   62 -
 test/testdocs/ulink.001.xml                    |   23 -
 test/testdocs/ulink.002.xml                    |   21 -
 test/testdocs/variablelist.001.xml             |   83 -
 test/testdocs/variablelist.002.xml             |   35 -
 test/testdocs/variablelist.003.xml             |   26 -
 test/testdocs/variablelist.004.xml             |   26 -
 test/testdocs/wordsize.001.xml                 |   20 -
 test/testdocs/xmlspace.001.xml                 |   23 -
 test/testdocs/xref.001.xml                     |  120 --
 test/testdocs/xref.002.xml                     |   40 -
 test/testdocs/xref.003.xml                     |   77 -
 test/testdocs/xref.004.xml                     |  330 ----
 test/testdocs/xrefstyle.001.xml                |   19 -
 test/timing/timeall                            |   42 -
 xslt/common/css/README                         |    4 +-
 349 files changed, 2167 insertions(+), 19694 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index f962399d..9a427968 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,26 +1,23 @@
 *~
-.xml2po.mo
 ChangeLog
 INSTALL
 Makefile
-!/test/**/Makefile
-/test/colors/*.html
-/test/lipsum/html/
-/test/syntax/*.html
-/test/syntax/highlight.pack.js
 Makefile.in
-aclocal.m4
-autom4te.cache
-config.guess
-config.log
-config.status
-config.sub
-configure
-install-sh
-missing
-yelp-xsl.pc
-
-/doc/yelp-xsl/ducks/*.duck
-/xslt/theme/test-theme.html
+/aclocal.m4
+/autom4te.cache/
+/config.guess
+/config.log
+/config.rpath
+/config.status
+/config.sub
+/configure
+/doc/yelp-xsl/ducks/
+/install-sh
+/m4/
+/missing
+/test/colors/output/
+/test/docbook/output/
+/test/mallard/output/
+/test/syntax/output/
 /xslt/common/domains/yelp-xsl.xml
-/test/testdocs/html
+/yelp-xsl.pc
diff --git a/test/colors/README b/test/colors/README
new file mode 100644
index 00000000..e620c461
--- /dev/null
+++ b/test/colors/README
@@ -0,0 +1,11 @@
+This test shows the colors provided by colors.xsl, including those
+that can be automatically computed. It shows all foreground colors
+on all background color, along with the WCAG contrast ratio to
+ensure accessibility for various visual impairments.
+
+To try things out, just make changes directly to the files in your
+checkout of yelp-xsl. You don't have to build or install your copy
+of yelp-xsl. Just build this preview document. To build this preview
+document, just run:
+
+  ./build.sh
diff --git a/test/colors/build.sh b/test/colors/build.sh
new file mode 100755
index 00000000..96665230
--- /dev/null
+++ b/test/colors/build.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+if [ ! -d output ]; then mkdir output; fi
+rm -f output/*.*
+xsltproc -o output/testcolors.html testcolors.xsl testcolors.xsl
diff --git a/test/docbook/README b/test/docbook/README
new file mode 100644
index 00000000..40de7930
--- /dev/null
+++ b/test/docbook/README
@@ -0,0 +1,10 @@
+This document is intended to test out different features and style
+changes for DocBook documents. If you need to test things not in
+this document, feel free to add stuff to this document.
+
+To try things out, just make changes directly to the files in your
+checkout of yelp-xsl. You don't have to build or install your copy
+of yelp-xsl. Just build this preview document. To build this preview
+document, just run:
+
+  ./build.sh
diff --git a/test/docbook/build.sh b/test/docbook/build.sh
new file mode 100755
index 00000000..29cb8119
--- /dev/null
+++ b/test/docbook/build.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+if [ ! -d output ]; then mkdir output; fi
+rm -f output/*.*
+xsltproc --nonet --xinclude -o output/ \
+         --param db.chunk.chunk_top 1 \
+         ../../xslt/docbook/html/db2html.xsl \
+         source/index.docbook
diff --git a/test/docbook/source/bibliography.xml b/test/docbook/source/bibliography.xml
new file mode 100644
index 00000000..9cac4b01
--- /dev/null
+++ b/test/docbook/source/bibliography.xml
@@ -0,0 +1,77 @@
+<bibliography id="bibliography">
+  <bibliodiv id="bibliodiv">
+    <title>A Bibliography Division</title>
+
+    <bibliolist>
+    <title>A <sgmltag>bibliolist</sgmltag></title>
+
+    <biblioentry>
+      <abbrev>AhoSethiUllman96</abbrev>
+      <authorgroup>
+        <author><firstname>Alfred V.</firstname><surname>Aho</surname></author>
+        <author><firstname>Ravi</firstname><surname>Sethi</surname></author>
+        <author><firstname>Jeffrey D.</firstname><surname>Ullman</surname></author>
+      </authorgroup>
+      <copyright><year>1996</year>
+      <holder>Bell Telephone Laboratories, Inc.</holder></copyright>
+      <editor><firstname>James T.</firstname><surname>DeWolf</surname></editor>
+      <isbn>0-201-10088-6</isbn>
+      <publisher>
+        <publishername>Addison-Wesley Publishing Company</publishername>
+      </publisher>
+      <title>Compilers, Principles, Techniques, and Tools</title>
+    </biblioentry>
+
+    <biblioentry xreflabel="Kites75">
+      <authorgroup>
+        <author><firstname>Andrea</firstname><surname>Bahadur</surname></author>
+        <author><firstname>Mark</firstname><surname>Shwarek</surname></author>
+      </authorgroup>
+      <copyright><year>1974</year><year>1975</year>
+      <holder>Product Development International Holding N. V.</holder>
+      </copyright>
+      <isbn>0-88459-021-6</isbn>
+      <publisher>
+        <publishername>Plenary Publications International, Inc.</publishername>
+      </publisher>
+      <title>Kites</title>
+      <subtitle>Ancient Craft to Modern Sport</subtitle>
+      <pagenums>988-999</pagenums>
+    </biblioentry>
+
+    </bibliolist>
+
+    <biblioentry id="Walsh97">
+      <abbrev>Walsh97</abbrev>
+      <biblioset relation='journal'>
+        <title>XML: Principles, Tools, and Techniques</title>
+        <publisher>
+          <publishername>O'Reilly &amp; Associates, Inc.</publishername>
+        </publisher>
+        <issn>1085-2301</issn>
+        <editor><firstname>Dan</firstname><surname>Connolly</surname></editor>
+      </biblioset>
+      <biblioset relation='article'>
+        <title>A Guide to XML</title>
+        <author><surname>Walsh</surname><firstname>Norman</firstname></author>
+        <copyright><year>1997</year><holder>ArborText, Inc.</holder></copyright>
+        <pagenums>97-108</pagenums>
+      </biblioset>
+    </biblioentry>
+
+    <bibliomixed>
+      <abbrev>Walsh96</abbrev>
+      <bibliomset relation='article'>
+        <surname>Walsh</surname>, <firstname>Norman</firstname>.
+        <title role='article'>Introduction to Cascading Style Sheets</title>.
+      </bibliomset>
+      <bibliomset relation='journal'>
+        <title>The World Wide Web Journal</title> 
+        <volumenum>2</volumenum><issuenum>1</issuenum>.
+        <publishername>O'Reilly &amp; Associates, Inc.</publishername> and
+        <corpname>The World Wide Web Consortium</corpname>.
+        <pubdate>Winter, 1996</pubdate></bibliomset>.
+    </bibliomixed>
+
+  </bibliodiv>
+</bibliography>
diff --git a/test/docbook/source/blocks.xml b/test/docbook/source/blocks.xml
new file mode 100644
index 00000000..2fdf2401
--- /dev/null
+++ b/test/docbook/source/blocks.xml
@@ -0,0 +1,486 @@
+<chapter xmlns="http://docbook.org/ns/docbook";
+         id="blocks">
+<title>Some Block Elements</title>
+<titleabbrev>Some Blocks</titleabbrev>
+
+<para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+porttitor condimentum nulla.</para>
+
+<section id="admon">
+  <title>Admonitions</title>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <caution>
+    <title>Beware the Title!</title>
+    <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+    faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+    Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+    consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+    Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+    porttitor condimentum nulla.</para>
+  </caution>
+
+  <important>
+    <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+    faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+    Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+    consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+    Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+    porttitor condimentum nulla.</para>
+  </important>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <note>
+    <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+    faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+    Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+    consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+    Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+    porttitor condimentum nulla.</para>
+  </note>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <note role="bug">
+    <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+    faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+    Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+    consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+    Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+    porttitor condimentum nulla.</para>
+  </note>
+
+  <tip>
+    <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+    faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+    Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+    consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+    Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+    porttitor condimentum nulla.</para>
+  </tip>
+
+  <warning>
+    <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+    faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+    Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+    consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+    Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+    porttitor condimentum nulla.</para>
+  </warning>
+
+</section> <!-- admon -->
+
+<section id="formal-block">
+  <title>Formal Blocks</title>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <example>
+    <title>An Example</title>
+    <programlisting><![CDATA[
+$(_DOC_LC_DOCS) : $(_DOC_C_DOCS)
+    if ! test -d $(dir $@); then mkdir $(dir $@); fi
+    case "$(srcdir)" in /*) sd="$(srcdir)";; *) sd="../$(srcdir)";;esac; \
+    if [ -f "C/$(notdir $@)" ]; then d="../"; else d="$$sd/"; fi; \
+    (cd $(dir $@) && \
+      $(_xml2po) -e -p \
+          "$${d}$(dir $@)$(patsubst %/$(notdir $@),%,$@).po" \
+              "$${d}C/$(notdir $@)" > $(notdir $@).tmp && \
+                  cp $(notdir $@).tmp $(notdir $@) && rm -f $(notdir $@).tmp)
+]]></programlisting>
+  </example>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <figure>
+    <title>A Figure</title>
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="http://www.gnome.org/projects/orca/images/orca2-sm.jpg"/>
+      </imageobject>
+      <caption><para>The mascot for the <ulink
+      url="http://www.gnome.org/projects/orca/index.html";>Orca screen
+      reader</ulink></para></caption>
+    </mediaobject>
+  </figure>
+  <informalfigure>
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="http://www.gnome.org/projects/orca/images/orca2-sm.jpg"/>
+      </imageobject>
+      <caption><para>The mascot for the <ulink
+      url="http://www.gnome.org/projects/orca/index.html";>Orca screen
+      reader</ulink></para></caption>
+    </mediaobject>
+  </informalfigure>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+</section> <!-- formal-block -->
+
+  <section id="programlisting">
+  <title>Program Listings</title>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <programlisting><![CDATA[
+function runline (line, ix, jx, pre, aft, char, name, id, fmt) {
+  ix = match(line, /[\*\$\@\%\!\#]\{[^\}]*\}/)
+  if (ix > 0) {
+    jx = ix + index(substr(line, ix), "}");
+    pre = substr(line, 1, ix - 1);
+    aft = substr(line, jx);
+    char = substr(line, ix, 1);
+    name = substr(line, ix + 2, jx - ix - 3);
+    id = name;
+    while (sub(/[\.-]/, "_", id));
+    if (char == "!")
+      fmt = "<filename><link linkend='S__%s'>%s</link></filename>";
+    else if (char == "*")
+      fmt = "<function><link linkend='T__%s'>%s</link></function>";
+    else if (char == "%")
+      fmt = "<function><link linkend='M__%s'>%s</link></function>";
+    else if (char == "@") 
+      fmt = "<parameter><link linkend='P__%s'>%s</link></parameter>";
+    else if (char == "$") 
+      fmt = "<parameter>"name"</parameter>";
+    else if (char == "#")
+      fmt = "<literal>"name"</literal>";
+    else
+      fmt = name;
+    return sprintf("%s%s%s",
+                  runline(pre),
+                  sprintf(fmt, id, name),
+                  runline(aft) );
+  } else {
+    return line;
+  }
+}
+]]></programlisting>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <programlisting linenumbering="numbered"><![CDATA[
+function runline (line, ix, jx, pre, aft, char, name, id, fmt) {
+  ix = match(line, /[\*\$\@\%\!\#]\{[^\}]*\}/)
+  if (ix > 0) {
+    jx = ix + index(substr(line, ix), "}");
+    pre = substr(line, 1, ix - 1);
+    aft = substr(line, jx);
+    char = substr(line, ix, 1);
+    name = substr(line, ix + 2, jx - ix - 3);
+    id = name;
+    while (sub(/[\.-]/, "_", id));
+    if (char == "!")
+      fmt = "<filename><link linkend='S__%s'>%s</link></filename>";
+    else if (char == "*")
+      fmt = "<function><link linkend='T__%s'>%s</link></function>";
+    else if (char == "%")
+      fmt = "<function><link linkend='M__%s'>%s</link></function>";
+    else if (char == "@") 
+      fmt = "<parameter><link linkend='P__%s'>%s</link></parameter>";
+    else if (char == "$") 
+      fmt = "<parameter>"name"</parameter>";
+    else if (char == "#")
+      fmt = "<literal>"name"</literal>";
+    else
+      fmt = name;
+    return sprintf("%s%s%s",
+                  runline(pre),
+                  sprintf(fmt, id, name),
+                  runline(aft) );
+  } else {
+    return line;
+  }
+}
+]]></programlisting>
+
+<programlisting linenumbering="numbered" continuation="continues">
+BEGIN { print "&lt;section&gt;"; }
+</programlisting>
+
+<programlisting linenumbering="numbered" continuation="continues">
+<![CDATA[/<\!--\!\!/ {
+  inthis = "title";
+  this = "header";
+  next;
+}
+]]></programlisting>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+<programlisting linenumbering="numbered" startinglinenumber="701">
+# The starting line number is 701.
+# So this is line number 72.
+</programlisting>
+
+
+  </section> <!-- programlisting -->
+
+  <section id="screen">
+  <title>Screens</title>
+
+  <para>This <sgmltag>screen</sgmltag> element has <sgmltag>prompt</sgmltag>,
+  <sgmltag>userinput</sgmltag>, and <sgmltag>computeroutput</sgmltag> elements.</para>
+
+  <screen><prompt>[shaunm@verso testbook] </prompt><userinput>make</userinput>
+<computeroutput><![CDATA[if [ ! -d html ]; then mkdir html; fi
+rm -f html/*.*
+xsltproc --timing --nonet --xinclude -o html/ \
+        --param db.chunk.chunk_top 1 \
+        --stringparam theme.icon.admon.path "../../../data/icons/" \
+        --stringparam theme.icon.nav.previous "../../../data/icons/nav-previous.png" \
+        --stringparam theme.icon.nav.next "../../../data/icons/nav-next.png" \
+        ../../xslt/docbook/html/db2html.xsl \
+        testbook.xml
+Parsing stylesheet ../../xslt/docbook/html/db2html.xsl took 0 ms
+Parsing document testbook.xml took 51 ms
+XInclude processing testbook.xml took 0 ms
+Running stylesheet and saving result took 144 ms
+]]></computeroutput></screen>
+
+  <screen linenumbering="numbered"><prompt>[shaunm@verso testbook] </prompt><userinput>make</userinput>
+<computeroutput><![CDATA[if [ ! -d html ]; then mkdir html; fi
+rm -f html/*.*
+xsltproc --timing --nonet --xinclude -o html/ \
+        --param db.chunk.chunk_top 1 \
+        --stringparam theme.icon.admon.path "../../../data/icons/" \
+        --stringparam theme.icon.nav.previous "../../../data/icons/nav-previous.png" \
+        --stringparam theme.icon.nav.next "../../../data/icons/nav-next.png" \
+        ../../xslt/docbook/html/db2html.xsl \
+        testbook.xml
+Parsing stylesheet ../../xslt/docbook/html/db2html.xsl took 0 ms
+Parsing document testbook.xml took 51 ms
+XInclude processing testbook.xml took 0 ms
+Running stylesheet and saving result took 144 ms
+]]></computeroutput></screen>
+
+  </section> <!-- screen -->
+
+<section id="cmdsynopsis">
+  <title>Commands</title>
+  <cmdsynopsis>
+    <command>cd</command>
+    <arg choice="req"><replaceable>directory</replaceable></arg>
+  </cmdsynopsis>
+  <cmdsynopsis>
+    <command>cal</command>
+    <arg>-j</arg>
+    <arg>-y</arg>
+    <arg>month <arg>year</arg></arg>
+  </cmdsynopsis>
+  <cmdsynopsis>
+    <command>chgrp</command>
+    <arg>-R <group>
+      <arg>-H</arg>
+      <arg>-L</arg>
+      <arg>-P</arg>
+    </group></arg>
+    <arg>-f</arg>
+    <arg choice='plain'><replaceable>group</replaceable></arg>
+    <arg rep='repeat' choice='plain'><replaceable>file</replaceable></arg>
+  </cmdsynopsis>
+  <para>Here we use an <sgmltag>sbr</sgmltag> element:</para>
+  <cmdsynopsis>
+    <command>ls</command>
+    <group><arg>--all</arg><arg>--almost-all</arg></group>
+    <sbr/>
+    <arg>--ignore-backups</arg>
+    <sbr/>
+    <arg>--directory</arg>
+    <sbr/>
+    <arg>--human-readable</arg>
+    <sbr/>
+    <arg>--ignore=<replaceable>PATTERN</replaceable></arg>
+    <sbr/>
+    <arg>-l</arg>
+    <sbr/>
+    <arg rep="repeat"><replaceable>FILE</replaceable></arg>
+  </cmdsynopsis>
+  <para>And here we put <sgmltag>sbr</sgmltag> elements inside
+  <sgmltag>arg</sgmltag> and <sgmltag>group</sgmltag> elements:</para>
+  <cmdsynopsis>
+    <command>ls</command>
+    <group><arg>--all</arg><sbr/><arg>--almost-all</arg></group>
+    
<arg>--ignore=<sbr/><group><replaceable>PATTERN</replaceable><sbr/><replaceable>PATTERN</replaceable><sbr/><replaceable>PATTERN</replaceable></group></arg>
+    <sbr/>
+    
<arg>--ignore=<group><replaceable>PATTERN</replaceable><sbr/><replaceable>PATTERN</replaceable><sbr/><replaceable>PATTERN</replaceable></group></arg>
+    <sbr/>
+    <group><arg choice="req">fe=<sbr/>fi</arg><arg>fo</arg><sbr/><arg>fum</arg></group>
+    <sbr/>
+    <arg>-l</arg>
+    <arg rep="repeat"><replaceable>FILE</replaceable></arg>
+  </cmdsynopsis>
+
+  <para>Also, <sgmltag>sbr</sgmltag> tags with fragments:</para>
+  <cmdsynopsis>
+    <command>foo</command>
+    <group><synopfragmentref linkend="synopfrag1"/><arg>foo</arg><sbr/><arg>bar</arg></group>
+    <arg><synopfragmentref linkend="synopfrag2"/>foo=<sbr/>bar</arg>
+    <synopfragment id="synopfrag1">
+      <group><arg>foo</arg><sbr/><arg>bar</arg></group>
+      <arg>foo=<sbr/>bar</arg>
+    </synopfragment>
+    <synopfragment id="synopfrag2">
+      <group><arg>foo</arg><sbr/><arg>bar</arg></group>
+      <arg>foo=<sbr/>bar</arg>
+    </synopfragment>
+  </cmdsynopsis>
+
+  <para>Here we put two <sgmltag>cmdsynopsis</sgmltag> elements inside
+  a single <sgmltag>synopsis</sgmltag> element:</para>
+  <synopsis><cmdsynopsis>
+    <command>grep</command>
+    <arg><replaceable>options</replaceable></arg>
+    <arg choice="plain"><replaceable>PATTERN</replaceable></arg>
+    <arg rep="repeat"><replaceable>FILE</replaceable></arg>
+    </cmdsynopsis><cmdsynopsis>
+    <command>grep</command>
+    <arg><replaceable>options</replaceable></arg>
+    <group>
+      <arg>-e <replaceable>PATTERN</replaceable></arg>
+      <arg>-f <replaceable>FILE</replaceable></arg>
+    </group>
+    <arg rep="repeat"><replaceable>FILE</replaceable></arg>
+  </cmdsynopsis></synopsis>
+  <para>Here we just put both commands in a single <sgmltag>cmdsynopsis</sgmltag>
+  element:</para>
+  <cmdsynopsis>
+    <command>grep</command>
+    <arg><replaceable>options</replaceable></arg>
+    <arg choice="plain"><replaceable>PATTERN</replaceable></arg>
+    <arg rep="repeat"><replaceable>FILE</replaceable></arg>
+    <command>grep</command>
+    <arg><replaceable>options</replaceable></arg>
+    <group>
+      <arg>-e <replaceable>PATTERN</replaceable></arg>
+      <arg>-f <replaceable>FILE</replaceable></arg>
+    </group>
+    <arg rep="repeat"><replaceable>FILE</replaceable></arg>
+  </cmdsynopsis>
+</section>
+
+<section id="misc-block">
+  <title>Miscellaneous</title>
+
+  <epigraph>
+    <attribution>Henry Spencer</attribution>
+    <para>Those who do not understand Unix are condemned to reinvent it,
+    poorly.</para>
+  </epigraph>
+
+  <para>The above was brought to you courtesy of the <sgmltag>epigraph</sgmltag>
+  element.  Now here is an <sgmltag>address</sgmltag> element:</para>
+
+  <address>Free Software Foundation
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301
+USA</address>
+
+  <para>Here is a <sgmltag>blockquote</sgmltag> element:</para>
+
+  <blockquote>
+    <attribution>Richard Stallman, from the <ulink
+    url="http://www.gnu.org/gnu/manifesto.html";>GNU Manifeto</ulink></attribution>
+    <para>I consider that the golden rule requires that if I like a program
+    I must share it with other people who like it. Software sellers want to
+    divide the users and conquer them, making each user agree not to share
+    with others. I refuse to break solidarity with other users in this way.
+    I cannot in good conscience sign a nondisclosure agreement or a software
+    license agreement. For years I worked within the Artificial Intelligence
+    Lab to resist such tendencies and other inhospitalities, but eventually
+    they had gone too far: I could not remain in an institution where such
+    things are done for me against my will.</para>
+  </blockquote>
+
+  <formalpara>
+    <title>Formal Paragraph</title>
+    <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+    faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+    Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+    consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+    Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+    porttitor condimentum nulla.</para>
+  </formalpara>
+
+  <para>Next we have a <sgmltag>literallayout</sgmltag> element:</para>
+
+  <literallayout>This is a line.
+This is another line.
+  This line is indented.</literallayout>
+
+  <para>And here is a <sgmltag>synopsis</sgmltag> element:</para>
+  <synopsis><![CDATA[#include <gtk/gtk.h>
+
+                    GtkButton;
+GtkWidget*          gtk_button_new                      (void);
+GtkWidget*          gtk_button_new_with_label           (const gchar *label);
+GtkWidget*          gtk_button_new_with_mnemonic        (const gchar *label);
+GtkWidget*          gtk_button_new_from_stock           (const gchar *stock_id);
+]]></synopsis>
+  <synopsis linenumbering="numbered"><![CDATA[#include <gtk/gtk.h>
+void                gtk_button_pressed                  (GtkButton *button);
+void                gtk_button_released                 (GtkButton *button);
+void                gtk_button_clicked                  (GtkButton *button);
+void                gtk_button_enter                    (GtkButton *button);
+void                gtk_button_leave                    (GtkButton *button);
+]]></synopsis>
+
+<!-- FIXME:
+glossary stuff
+-->
+
+</section> <!-- misc-block -->
+
+</chapter>
diff --git a/test/docbook/source/cals-tables.xml b/test/docbook/source/cals-tables.xml
new file mode 100644
index 00000000..c94b9ae0
--- /dev/null
+++ b/test/docbook/source/cals-tables.xml
@@ -0,0 +1,322 @@
+<chapter xmlns="http://docbook.org/ns/docbook";
+         id="cals-tables">
+<title>CALS Tables</title>
+
+<informaltable>
+<tgroup cols="2">
+  <tbody>
+    <row><entry>fe</entry><entry>fi</entry></row>
+    <row><entry>fo</entry><entry>fum</entry></row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+porttitor condimentum nulla.</para>
+
+<section id="cals-tables-span">
+<title>Spanning</title>
+
+<para>Here's some column spanning:</para>
+<informaltable frame="none">
+<tgroup cols="4" rowsep="1" colsep="1">
+  <colspec colname="one"/>
+  <colspec colname="two"/>
+  <colspec colname="three"/>
+  <colspec colname="four"/>
+  <spanspec spanname="two-four" namest="two" nameend="four"/>
+  <tbody>
+    <row>
+      <entry>one</entry>
+      <entry>two</entry>
+      <entry>three</entry>
+      <entry>four</entry>
+    </row>
+    <row>
+      <entry namest="one" nameend="two">one-two</entry>
+      <entry>three</entry>
+      <entry>four</entry>
+    </row>
+    <row>
+      <entry namest="two" nameend="three">two-three</entry>
+      <entry>four</entry>
+    </row>
+    <row>
+      <entry>one</entry>
+      <entry spanname="two-four">two-four</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>Here's some row spanning:</para>
+<informaltable frame="none">
+<tgroup cols="4" rowsep="1" colsep="1">
+  <tbody>
+    <row>
+      <entry morerows="1">one</entry>
+      <entry morerows="2">two</entry>
+      <entry>three</entry>
+      <entry>four</entry>
+    </row>
+    <row>
+      <entry>three</entry>
+      <entry morerows="1">four</entry>
+    </row>
+    <row>
+      <entry>one</entry>
+      <entry morerows="1">three</entry>
+    </row>
+    <row>
+      <entry>one</entry>
+      <entry>two</entry>
+      <entry>four</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>Here we test implicit entries:</para>
+<informaltable frame="none">
+<tgroup cols="4" rowsep="1" colsep="1">
+  <colspec colname="one"/>
+  <colspec colname="two"/>
+  <colspec colname="three"/>
+  <colspec colname="four"/>
+  <tbody>
+    <row>
+      <entry>one</entry>
+      <entry>two</entry>
+      <entry morerows="2">three</entry>
+      <entry>four</entry>
+    </row>
+    <row>
+      <entry colname="two">two</entry>
+      <entry>four</entry>
+    </row>
+    <row>
+      <entry colname="four">four</entry>
+    </row>
+    <row>
+      <entry colname="three">three</entry>
+      <entry>four</entry>
+    </row>
+    <row>
+      <entry colname="four">four</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>And here's some craziness to mix it all together:</para>
+<informaltable frame="none">
+<tgroup cols="5" rowsep="1" colsep="1">
+  <colspec colname="one"/>
+  <colspec colname="two"/>
+  <colspec colname="three"/>
+  <colspec colname="four"/>
+  <colspec colname="five"/>
+  <tbody>
+    <row>
+      <entry morerows="1">one</entry>
+      <entry>two</entry>
+      <entry>three</entry>
+      <entry morerows="3">four</entry>
+      <entry>five</entry>
+    </row>
+    <row>
+      <entry colname="three">three</entry>
+      <entry morerows="1">five</entry>
+    </row>
+    <row>
+      <entry>one</entry>
+      <entry namest="two" nameend="three">two-three</entry>
+    </row>
+    <row>
+      <entry>one</entry>
+      <entry namest="two" nameend="three" morerows="1">two-three</entry>
+      <entry>five</entry>
+    </row>
+    <row>
+      <entry>one</entry>
+      <entry>four</entry>
+      <entry>five</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+</section> <!-- cals-tables-span -->
+
+<section id="cals-tables-sep">
+<title>Separators</title>
+
+<!-- FIXME: more -->
+<para>Here we just set <sgmltag>colsep</sgmltag> on some
+<sgmltag>entry</sgmltag> elements:</para>
+<informaltable frame="none">
+<tgroup cols="3">
+  <tbody>
+    <row>
+      <entry colsep="1">SEP</entry>
+      <entry>no</entry>
+      <entry>no</entry>
+    </row>
+    <row>
+      <entry>no</entry>
+      <entry colsep="1">SEP</entry>
+      <entry>no</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>Here we turn column separators on and off with
+<sgmltag>colspec</sgmltag> elements:</para>
+<informaltable frame="none">
+<tgroup cols="3" colsep="1">
+  <colspec colname="one" colsep="0"/>
+  <colspec colname="two" colsep="1"/>
+  <colspec colname="three" colsep="0"/>
+  <colspec/>
+  <tbody>
+    <row>
+      <entry>no</entry>
+      <entry colname="two">SEP</entry>
+      <entry>no</entry>
+    </row>
+    <row>
+      <entry namest="one" nameend="two">SEP</entry>
+      <entry>no</entry>
+    </row>
+    <row>
+      <entry namest="two" nameend="three">no</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+</section> <!-- cals-tables-sep -->
+
+<section id="cals-tables-frames">
+<title>Frames</title>
+
+<para>This table has a top frame:</para>
+<informaltable frame="top">
+<tgroup cols="2">
+  <tbody>
+    <row>
+      <entry>fe</entry>
+      <entry>fi</entry>
+    </row>
+    <row>
+      <entry>fo</entry>
+      <entry>fum</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>This table has a bottom frame:</para>
+<informaltable frame="bottom">
+<tgroup cols="2">
+  <tbody>
+    <row>
+      <entry>fe</entry>
+      <entry>fi</entry>
+    </row>
+    <row>
+      <entry>fo</entry>
+      <entry>fum</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>This table has top and bottom frames:</para>
+<informaltable frame="topbot">
+<tgroup cols="2">
+  <tbody>
+    <row>
+      <entry>fe</entry>
+      <entry>fi</entry>
+    </row>
+    <row>
+      <entry>fo</entry>
+      <entry>fum</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>This table has side frames:</para>
+<informaltable frame="sides">
+<tgroup cols="2">
+  <tbody>
+    <row>
+      <entry>fe</entry>
+      <entry>fi</entry>
+    </row>
+    <row>
+      <entry>fo</entry>
+      <entry>fum</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>This table has no frames:</para>
+<informaltable frame="none">
+<tgroup cols="2">
+  <tbody>
+    <row>
+      <entry>fe</entry>
+      <entry>fi</entry>
+    </row>
+    <row>
+      <entry>fo</entry>
+      <entry>fum</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+<para>We default to framing all sides when not specified:</para>
+<informaltable>
+<tgroup cols="2">
+  <tbody>
+    <row>
+      <entry>fe</entry>
+      <entry>fi</entry>
+    </row>
+    <row>
+      <entry>fo</entry>
+      <entry>fum</entry>
+    </row>
+  </tbody>
+</tgroup>
+</informaltable>
+
+</section> <!-- cals-tables-frames -->
+
+<section id="cals-tables-misc">
+<title>Miscellaneous</title>
+
+<table pgwide="1">
+<title>Using <sgmltag>pgwide</sgmltag></title>
+<tgroup cols="3">
+  <tbody>
+    <row><entry>fe</entry><entry>fi</entry><entry>fo</entry></row>
+    <row><entry>fum</entry><entry>fe</entry><entry>fi</entry></row>
+    <row><entry>fo</entry><entry>fum</entry><entry>fe</entry></row>
+    <row><entry>fi</entry><entry>fo</entry><entry>fum</entry></row>
+  </tbody>
+</tgroup>
+</table>
+
+</section> <!-- cals-tables-misc -->
+</chapter> <!-- cals-tables -->
diff --git a/test/docbook/source/classsynopsis.xml b/test/docbook/source/classsynopsis.xml
new file mode 100644
index 00000000..23f6f177
--- /dev/null
+++ b/test/docbook/source/classsynopsis.xml
@@ -0,0 +1,214 @@
+<chapter xmlns="http://docbook.org/ns/docbook";
+         id="classsynopsis">
+<title>Class Synopses</title>
+
+<section id="classsynopsis-cpp">
+<title>C++</title>
+
+<para>Here is a <sgmltag>classsynopsis</sgmltag>:</para>
+<classsynopsis language="cpp">
+  <ooclass><classname>Button</classname></ooclass>
+  <ooclass><modifier>public</modifier><classname>Bin</classname></ooclass>
+  <constructorsynopsis>
+    <modifier>public</modifier>
+    <methodname>Button</methodname>
+    <void/>
+  </constructorsynopsis>
+  <constructorsynopsis>
+    <modifier>public</modifier>
+    <modifier>explicit</modifier>
+    <methodparam>
+      <modifier>const</modifier>
+      <type>Glib::ustring&amp;</type>
+      <parameter>label</parameter>
+    </methodparam>
+    <methodparam>
+      <type>bool</type>
+      <parameter>mnemonic</parameter>
+      <initializer>false</initializer>
+    </methodparam>
+  </constructorsynopsis>
+  <destructorsynopsis>
+    <modifier>public</modifier>
+    <modifier>virtual</modifier>
+    <void/>
+  </destructorsynopsis>
+  <fieldsynopsis>
+    <modifier>private</modifier>
+    <modifier>friend</modifier>
+    <type>class</type>
+    <varname>Button_Class</varname>
+  </fieldsynopsis>
+  <fieldsynopsis>
+    <modifier>private</modifier>
+    <modifier>static</modifier>
+    <type>CppClassType</type>
+    <varname>button_class_</varname>
+  </fieldsynopsis>
+  <methodsynopsis>
+    <modifier>protected</modifier>
+    <modifier>virtual</modifier>
+    <void/>
+    <methodname>on_pressed</methodname>
+    <void/>
+  </methodsynopsis>
+  <methodsynopsis>
+    <modifier>protected</modifier>
+    <modifier>virtual</modifier>
+    <void/>
+    <methodname>on_released</methodname>
+    <void/>
+  </methodsynopsis>
+  <methodsynopsis>
+    <modifier>protected</modifier>
+    <modifier>virtual</modifier>
+    <void/>
+    <methodname>on_clicked</methodname>
+    <void/>
+  </methodsynopsis>
+  <methodsynopsis>
+    <modifier>protected</modifier>
+    <modifier>virtual</modifier>
+    <void/>
+    <methodname>on_enter</methodname>
+    <void/>
+  </methodsynopsis>
+  <methodsynopsis>
+    <modifier>protected</modifier>
+    <modifier>virtual</modifier>
+    <void/>
+    <methodname>on_leave</methodname>
+    <void/>
+  </methodsynopsis>
+  <methodsynopsis>
+    <modifier>protected</modifier>
+    <modifier>virtual</modifier>
+    <void/>
+    <methodname>on_activate</methodname>
+    <void/>
+  </methodsynopsis>
+  <methodsynopsis>
+    <modifier>public</modifier>
+    <type>GType</type>
+    <methodname>get_type</methodname>
+    <void/>
+    <modifier>G_GNUC_CONST</modifier>
+  </methodsynopsis>
+  <methodsynopsis>
+    <modifier>public</modifier>
+    <type>GType</type>
+    <methodname>get_base_type</methodname>
+    <void/>
+    <modifier>G_GNUC_CONST</modifier>
+  </methodsynopsis>
+  <fieldsynopsis>
+    <modifier>public</modifier>
+    <modifier>static</modifier>
+    <type>bool</type>
+    <varname>fake</varname>
+    <initializer>true</initializer>
+  </fieldsynopsis>
+</classsynopsis>
+
+<para>Here is a standalone <sgmltag>methodsynopsis</sgmltag>:</para>
+<methodsynopsis language="cpp">
+<modifier>public</modifier>
+<void/>
+<methodname>frobnicate</methodname>
+<methodparam><type>Foo</type><parameter>foo</parameter></methodparam>
+<methodparam><modifier>const</modifier><type>bool</type><parameter>frob</parameter><initializer>true</initializer></methodparam>
+<modifier>FROB</modifier>
+</methodsynopsis>
+
+</section> <!-- classsynopsis-cpp -->
+
+<section id="classsynopsis-csharp">
+<title>C#</title>
+</section> <!-- classsynopsis-csharp -->
+
+<section id="classsynopsis-java">
+<title>Java</title>
+</section> <!-- classsynopsis-java -->
+
+<section id="classsynopsis-python">
+<title>Python</title>
+
+<para>Here is a <sgmltag>classsynopsis</sgmltag>:</para>
+<classsynopsis language="python">
+<ooclass><classname>gtk.Button</classname></ooclass>
+<ooclass><classname>gtk.Bin</classname></ooclass>
+<constructorsynopsis>
+  <methodparam>
+    <parameter>label</parameter>
+    <initializer>None</initializer>
+  </methodparam>
+  <methodparam>
+    <parameter>stock</parameter>
+    <initializer>None</initializer>
+  </methodparam>
+  <methodparam>
+    <parameter>use_underline</parameter>
+    <initializer>True</initializer>
+  </methodparam>
+</constructorsynopsis>
+<destructorsynopsis><void/></destructorsynopsis>
+<methodsynopsis><methodname>pressed</methodname><void/></methodsynopsis>
+<methodsynopsis><methodname>released</methodname><void/></methodsynopsis>
+<methodsynopsis><methodname>clicked</methodname><void/></methodsynopsis>
+<methodsynopsis><methodname>enter</methodname><void/></methodsynopsis>
+<methodsynopsis><methodname>leave</methodname><void/></methodsynopsis>
+<methodsynopsis>
+  <methodname>set_relief</methodname>
+  <methodparam><parameter>newstyle</parameter></methodparam>
+</methodsynopsis>
+<methodsynopsis><methodname>get_relief</methodname><void/></methodsynopsis>
+<fieldsynopsis><varname>fake</varname><initializer>True</initializer></fieldsynopsis>
+</classsynopsis>
+
+<para>Here we use <sgmltag>modifier</sgmltag> for Python decorators:</para>
+<classsynopsis language="python">
+<ooclass><classname>Decorated</classname></ooclass>
+<ooclass><classname>Base1</classname></ooclass>
+<ooclass><classname>Base2</classname></ooclass>
+<ooclass><classname>Base3</classname></ooclass>
+<constructorsynopsis>
+  <modifier>@constructor</modifier>
+  <methodname>create</methodname>
+  <methodparam><parameter>input</parameter></methodparam>
+</constructorsynopsis>
+<destructorsynopsis>
+  <modifier>@destructor</modifier>
+  <methodname>destroy</methodname>
+  <void/>
+</destructorsynopsis>
+<fieldsynopsis>
+  <modifier>@private</modifier>
+  <varname>parts</varname>
+  <initializer>None</initializer>
+</fieldsynopsis>
+<methodsynopsis>
+  <modifier>@classmethod</modifier>
+  <methodname>find_all</methodname>
+  <void/>
+</methodsynopsis>
+</classsynopsis>
+
+<para>Here we use annotations from
+<ulink url="http://www.python.org/dev/peps/pep-3107/";>PEP 3107</ulink>:</para>
+<methodsynopsis language="python">
+  <type>Frobnicated</type>
+  <methodname>frobnicate</methodname>
+  <methodparam>
+    <type>Frobnicatable</type>
+    <parameter>frob</parameter>
+  </methodparam>
+  <methodparam>
+    <type>bool</type>
+    <parameter>thorough</parameter>
+    <initializer>False</initializer>
+  </methodparam>
+</methodsynopsis>
+
+</section> <!-- classsynopsis-python -->
+
+</chapter>
diff --git a/test/docbook/source/funcsynopsis.xml b/test/docbook/source/funcsynopsis.xml
new file mode 100644
index 00000000..98f1a0d7
--- /dev/null
+++ b/test/docbook/source/funcsynopsis.xml
@@ -0,0 +1,131 @@
+<chapter xmlns="http://docbook.org/ns/docbook";
+         id="funcsynopsis">
+<title>Function Synopses</title>
+
+<section id="funcsynopsis-ansi">
+<title>ANSI Formatting</title>
+
+<para>Here's an example with two <sgmltag>modifier</sgmltag> elements:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style ANSI?>
+<funcsynopsisinfo>// This is a funcsynopsisinfo</funcsynopsisinfo>
+<funcprototype>
+  <modifier>static</modifier>
+  <modifier>SILLY</modifier>
+  <funcdef><type>Foo *</type> <function>foo_list_get_nth</function></funcdef>
+  <paramdef><type>FooList *</type><parameter>list</parameter></paramdef>
+  <paramdef>int <parameter>n</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>This example uses <sgmltag>void</sgmltag>:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style ANSI?>
+<funcprototype>
+  <modifier>static</modifier>
+  <funcdef>void <function>foo_noop</function></funcdef>
+  <void/>
+</funcprototype>
+</funcsynopsis>
+
+<para>This example uses <sgmltag>varargs</sgmltag>:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style ANSI?>
+<funcprototype>
+  <modifier>static</modifier>
+  <funcdef>void <function>foo_process_args</function></funcdef>
+  <paramdef><type>Foo *</type><parameter>foo</parameter></paramdef>
+  <varargs/>
+</funcprototype>
+</funcsynopsis>
+
+<para>This example places a <sgmltag>modifier</sgmltag> after the
+<sgmltag>func</sgmltag>, for some strange reason:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style ANSI?>
+<funcprototype>
+  <funcdef>void <function>foo_process_args</function></funcdef>
+  <paramdef><type>Foo *</type><parameter>foo</parameter></paramdef>
+  <varargs/>
+  <modifier>AFTER</modifier>
+</funcprototype>
+</funcsynopsis>
+
+<para>This example uses <sgmltag>funcparams</sgmltag>:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style ANSI?>
+<funcprototype>
+  <funcdef>void <function>foo_list_foreach</function></funcdef>
+  <paramdef><type>FooList *</type><parameter>list</parameter></paramdef>
+  <paramdef>int (*<parameter>func</parameter>) <funcparams>Foo *, void *</funcparams></paramdef>
+  <paramdef>void *<parameter>user_data</parameter></paramdef>
+</funcprototype>
+
+</funcsynopsis>
+
+</section> <!-- funcsynopsis-ansi -->
+
+<section id="funcsynopsis-kr">
+<title>K&amp;R Formatting</title>
+
+<para>Here's an example with two <sgmltag>modifier</sgmltag> elements:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style KR?>
+<funcsynopsisinfo>// This is a funcsynopsisinfo</funcsynopsisinfo>
+<funcprototype>
+  <modifier>static</modifier>
+  <modifier>SILLY</modifier>
+  <funcdef><type>Foo *</type> <function>foo_list_get_nth</function></funcdef>
+  <paramdef><type>FooList *</type><parameter>list</parameter></paramdef>
+  <paramdef>int <parameter>n</parameter></paramdef>
+</funcprototype>
+</funcsynopsis>
+
+<para>This example uses <sgmltag>void</sgmltag>:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style KR?>
+<funcprototype>
+  <modifier>static</modifier>
+  <funcdef>void <function>foo_noop</function></funcdef>
+  <void/>
+</funcprototype>
+</funcsynopsis>
+
+<para>This example uses <sgmltag>varargs</sgmltag>:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style KR?>
+<funcprototype>
+  <modifier>static</modifier>
+  <funcdef>void <function>foo_process_args</function></funcdef>
+  <paramdef><type>Foo *</type><parameter>foo</parameter></paramdef>
+  <varargs/>
+</funcprototype>
+</funcsynopsis>
+
+<para>This example places a <sgmltag>modifier</sgmltag> after the
+<sgmltag>func</sgmltag>, for some strange reason:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style KR?>
+<funcprototype>
+  <funcdef>void <function>foo_process_args</function></funcdef>
+  <paramdef><type>Foo *</type><parameter>foo</parameter></paramdef>
+  <varargs/>
+  <modifier>AFTER</modifier>
+</funcprototype>
+</funcsynopsis>
+
+<para>This example uses <sgmltag>funcparams</sgmltag>:</para>
+<funcsynopsis>
+<?db2html.funcsynopsis.style KR?>
+<funcprototype>
+  <funcdef>void <function>foo_list_foreach</function></funcdef>
+  <paramdef><type>FooList *</type><parameter>list</parameter></paramdef>
+  <paramdef>int (*<parameter>func</parameter>) <funcparams>Foo *, void *</funcparams></paramdef>
+  <paramdef>void *<parameter>user_data</parameter></paramdef>
+</funcprototype>
+
+</funcsynopsis>
+
+</section> <!-- funcsynopsis-kr -->
+
+</chapter>
diff --git a/test/docbook/source/glossary.xml b/test/docbook/source/glossary.xml
new file mode 100644
index 00000000..6c237dfa
--- /dev/null
+++ b/test/docbook/source/glossary.xml
@@ -0,0 +1,42 @@
+<glossary id="glossary">
+  <glossdiv id="glossary-div">
+    <title>A Glossary Division</title>
+    <glosslist>
+      <title>A Glossary List</title>
+      <glossentry>
+        <glossterm>applet</glossterm>
+        <glossdef>
+          <para>An applet is a small, interactive application that resides within
+          a panel, for example the <application>CD Player</application>. Each
+          applet has a simple user interface that you can operate with the mouse
+          or keyboard.</para>
+        </glossdef>
+      </glossentry>
+      <glossentry id="gloss-button">
+        <glossterm>button</glossterm>
+        <glossdef>
+          <para>The thing you press.</para>
+        </glossdef>
+      </glossentry>
+      <glossentry>
+        <glossterm>desktop</glossterm>
+        <glossdef>
+          <para>The part of the GNOME Desktop where there are no interface
+          graphical items, such as panels and windows.</para>
+        </glossdef>
+      </glossentry>
+    </glosslist>
+    <glossentry id="gloss-background">
+      <glossterm>desktop background</glossterm>
+      <abbrev>background</abbrev>
+      <glossdef>
+        <para>The image or color that is applied to your desktop.</para>
+        <glossseealso otherterm="gloss-background"/>
+      </glossdef>
+    </glossentry>
+    <glossentry>
+      <glossterm>desktop</glossterm>
+      <glosssee otherterm="gloss-background"/>
+    </glossentry>
+  </glossdiv> <!-- glossary-div -->
+</glossary>
diff --git a/test/docbook/source/idx.xml b/test/docbook/source/idx.xml
new file mode 100644
index 00000000..8efdcf03
--- /dev/null
+++ b/test/docbook/source/idx.xml
@@ -0,0 +1,26 @@
+<index id="idx">
+  <title>Manual Index</title>
+  <para>This index is constructed manually using <sgmltag>indexentry</sgmltag>
+  elements.</para>
+  <indexentry>
+    <primaryie><classname>GtkAboutDialog</classname></primaryie>
+    <seealsoie><classname>GtkDialog</classname></seealsoie>
+    <seealsoie><classname>GtkWindow</classname></seealsoie>
+  </indexentry>
+  <indexentry>
+    <primaryie><classname>GtkDialog</classname></primaryie>
+    <seealsoie><classname>GtkWindow</classname></seealsoie>
+  </indexentry>
+  <indexentry>
+    <primaryie><classname>GtkWindow</classname></primaryie>
+  </indexentry>
+  <indexentry>
+    <primaryie>windows</primaryie>
+    <seeie><classname>GtkWindow</classname></seeie>
+    <secondaryie>about dialogs</secondaryie>
+    <seeie><classname>GtkAboutDialog</classname></seeie>
+    <seealsoie><classname>GtkDialog</classname></seealsoie>
+    <secondaryie>dialogs</secondaryie>
+    <seeie><classname>GtkDialog</classname></seeie>
+  </indexentry>
+</index>
diff --git a/test/docbook/source/index.docbook b/test/docbook/source/index.docbook
new file mode 100644
index 00000000..e57610ed
--- /dev/null
+++ b/test/docbook/source/index.docbook
@@ -0,0 +1,62 @@
+<?xml version="1.0"?><!-- -*- indent-tabs-mode: nil -*- -->
+<book xmlns="http://docbook.org/ns/docbook";
+      xmlns:xi="http://www.w3.org/2001/XInclude";
+      id="index"> 
+  <title>Test Book</title> 
+  <bookinfo>
+    <abstract role="description">
+      <para>This is a description of the document.</para>
+    </abstract>
+    <copyright>
+      <year>2007</year>
+      <holder>Shaun McCance</holder>
+    </copyright>
+    <publisher role="maintainer">
+      <publishername>GNOME Documentation Project</publishername>
+    </publisher>
+    <author>
+      <firstname>Shaun</firstname>
+      <surname>McCance</surname>
+      <affiliation>
+        <orgname>GNOME Documentation Project</orgname>
+      </affiliation>
+      <email>shaunm gnome org</email>
+    </author>
+    <revhistory>
+      <revision>
+        <revnumber>0.1</revnumber>
+        <date>1887-02-03</date>
+        <revdescription>
+          <para role="author">Shaun McCance</para>
+          <para role="publisher">GNOME Documentation Project</para>
+        </revdescription>
+      </revision>
+      <revision>
+        <revnumber>0.2</revnumber>
+        <date>1902-03-08</date>
+        <revdescription>
+          <para role="author">Shaun McCance</para>
+          <para role="publisher">GNOME Documentation Project</para>
+        </revdescription>
+      </revision>
+    </revhistory>
+
+    <legalnotice>
+      <title>Feedback</title>
+      <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+      Integer lacinia.</para>
+    </legalnotice>
+  </bookinfo>
+
+<xi:include href="inline.xml"/>
+<xi:include href="blocks.xml"/>
+<xi:include href="lists.xml"/>
+<xi:include href="cals-tables.xml"/>
+<xi:include href="funcsynopsis.xml"/>
+<xi:include href="classsynopsis.xml"/>
+<xi:include href="glossary.xml"/>
+<xi:include href="bibliography.xml"/>
+<xi:include href="reference.xml"/>
+<xi:include href="idx.xml"/>
+
+</book>
diff --git a/test/docbook/source/inline.xml b/test/docbook/source/inline.xml
new file mode 100644
index 00000000..34f39b12
--- /dev/null
+++ b/test/docbook/source/inline.xml
@@ -0,0 +1,431 @@
+<chapter xmlns="http://docbook.org/ns/docbook";
+         id="inline">
+<title>Inline Elements</title>
+<variablelist>
+  <varlistentry>
+    <term><sgmltag>abbrev</sgmltag></term>
+    <listitem><para>The word <wordasword>concatenate</wordasword> is frequently abbreviated
+    as either <abbrev>concat</abbrev> or simply <abbrev>cat</abbrev>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>accel</sgmltag></term>
+    <listitem><para>To see the authors of an application, select
+    <guimenuitem><accel>A</accel>bout</guimenuitem> from the
+    <guimenuitem><accel>H</accel>elp</guimenuitem> menu.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>acronym</sgmltag></term>
+    <listitem><para><acronym>GNOME</acronym> stands for <acronym>GNU</acronym>
+    Network Object Model Environment.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>action</sgmltag></term>
+    <listitem><para>Logging out will cause the session manager to perform
+    <action>session saving</action>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>application</sgmltag></term>
+    <listitem><para><application>Yelp</application> is the default help
+    viewer in GNOME.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>citetitle</sgmltag></term>
+    <listitem><para>Please read <citetitle pubwork="article">A Pretty Good Article</citetitle>
+    and <citetitle pubwork="book">The Bestest Book Ever</citetitle>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>citation</sgmltag></term>
+    <listitem><para>Consult <citation>Walsh97</citation> for more information.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>classname</sgmltag></term>
+    <listitem><para>The <classname>YelpDocument</classname> class provides on-demand
+    page transformations in <application>Yelp</application>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>code</sgmltag></term>
+    <listitem><para>Call <code>frobnicate(file)</code> to frobnicate the file.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>command</sgmltag></term>
+    <listitem><para>To start <application>Yelp</application>, enter <command>yelp</command>
+    at the command line.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>computeroutput</sgmltag></term>
+    <listitem><para>Runnin <command>scrollkeeper-get-content-list C</command> should output
+    something like <computeroutput>/tmp/scrollkeeper-shaunm/contents.1</computeroutput>.
+    Sometimes it also prints errors like <computeroutput role="stderr">I/O warning :
+    failed to load external entity
+    "/var/lib/scrollkeeper/en_US.UTF-8/scrollkeeper_cl.xml"</computeroutput>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>constant</sgmltag></term>
+    <listitem><para>The maximum legal length for a path name is 
+    <constant class='limit'>PATH_MAX</constant>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>corpauthor</sgmltag></term>
+    <term><sgmltag>corpcredit</sgmltag></term>
+    <listitem><para>Some of the GNOME Documentation was written by
+    <corpauthor>Sun Microsystems</corpauthor>.  Some technical editing was also done
+    by <corpcredit>Sun Microsystems</corpcredit>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>database</sgmltag></term>
+    <listitem><para>The <database>Pulse</database> database tracks everything
+    you need to know about your project.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>email</sgmltag></term>
+    <listitem><para>To contact the GNOME Documentation Team, send an email to
+    <email>gnome-doc-list gnome org</email>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>emphasis</sgmltag></term>
+    <listitem><para>This is <emphasis>italic</emphasis>, and this is
+    <emphasis role="bold">bold</emphasis>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>envar</sgmltag></term>
+    <listitem><para>The <envar>YELP_DEBUG</envar> environment variable can be used to
+    control the debugging output in <application>Yelp</application>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>errorcode</sgmltag></term>
+    <term><sgmltag>errorname</sgmltag></term>
+    <term><sgmltag>errortext</sgmltag></term>
+    <term><sgmltag>errortype</sgmltag></term>
+    <listitem><para>On most DOS-derived systems, functions signal a
+    <errortext>File Not Found</errortext> error by returning <errorcode>2</errorcode>
+    (<errorname>ENOENT</errorname>).  This is usually a <errortype>recoverable</errortype>
+    (non-fatal) error.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>exceptionname</sgmltag></term>
+    <listitem><para>If the world is ending, this function will throw the exception
+    <exceptionname>ArmageddonException</exceptionname>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>filename</sgmltag></term>
+    <listitem><para>This text was written in the file
+    <filename>testbook.xml</filename>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>firstterm</sgmltag></term>
+    <listitem><para>This document has example <firstterm>tables</firstterm>, and in
+    particular <firstterm linkend="cals-tables">CALS tables</firstterm>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>foreignphrase</sgmltag></term>
+    <listitem><para>Free software is sometimes called <foreignphrase>libre</foreignphrase>
+    software.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>function</sgmltag></term>
+    <listitem><para>The function <function>g_strdup</function> duplicates a string.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>glossterm</sgmltag></term>
+    <listitem><para>There's no glossary entry for <glossterm>frobnicate</glossterm>.  This
+    links implicitly to the definition of <glossterm>button</glossterm>, but we have to use
+    an explicit link for <glossterm linkend="gloss-button">buttons</glossterm>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>guibutton</sgmltag></term>
+    <term><sgmltag>guiicon</sgmltag></term>
+    <term><sgmltag>guilabel</sgmltag></term>
+    <term><sgmltag>guimenu</sgmltag></term>
+    <term><sgmltag>guimenuitem</sgmltag></term>
+    <term><sgmltag>guisubmenu</sgmltag></term>
+    <listitem><para>You can select what fonts to use under the <guilabel>Fonts</guilabel>
+    heading in the dialog.  To close the dialog, click the <guibutton>Close</guibutton> button.
+    To open a file, select <guimenuitem>Open</guimenuitem> from the <guimenu>File</guimenu>
+    menu or click the <guiicon><inlinegraphic
+    fileref="file:///usr/share/icons/gnome/22x22/status/stock_open.png"/></guiicon> icon
+    on the toolbar.  To open a recent file, select a file from the <guisubmenu>Open Recent</guisubmenu>
+    submenu of the <guimenu>File</guimenu> menu.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>hardware</sgmltag></term>
+    <listitem><para>Unfortunately, your <hardware>hard drive</hardware> cannot be
+    fixed by simply blowing into it like an old game cartridge.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>inlineequation</sgmltag></term>
+    <term><sgmltag>mathphrase</sgmltag></term>
+    <listitem><para>Fermat's last theorem says that <inlineequation>
+    <alt>x^n + y^n ≠ z^n ∀ n > 2</alt>
+    <mathphrase>x<superscript>n</superscript> + y<superscript>n</superscript> ≠ 
z<superscript>n</superscript> ∀ n ≠ 2</mathphrase></inlineequation>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>interface</sgmltag></term>
+    <listitem><para>In old-school DocBook, we'd use the <sgmltag>interface</sgmltag>
+    tag for the <interface>Close</interface> button.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>interfacename</sgmltag></term>
+    <listitem><para>This class implements <interfacename>GtkCellLayout</interfacename>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>keycap</sgmltag></term>
+    <term><sgmltag>keycode</sgmltag></term>
+    <term><sgmltag>keysym</sgmltag></term>
+    <listitem><para>The <keycap>F1</keycap> key on an IBM PC keyboard generates the
+    scan code <keycode>0x3B</keycode> when pressed.  This value is defined as
+    <keysym>KEY_F1</keysym>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>keycombo</sgmltag></term>
+    <listitem><para>To copy the selection to the clipboard, press
+    <keycombo><keycap>Ctrl</keycap><keycap>C</keycap></keycombo>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>lineannotation</sgmltag></term>
+    <listitem><para>Do not run this command if you value your data:</para>
+    <screen>find . -type f -exec shred -fuz {} \;        <lineannotation>shred all files at any 
depth</lineannotation></screen></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>literal</sgmltag></term>
+    <listitem><para>Set <envar>YELP_DEBUG</envar> to <literal>function-calls</literal> to
+    see all the major function calls inside <application>Yelp</application>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>markup</sgmltag></term>
+    <listitem><para>To italicize text on Wikipedia, type <markup>''text''</markup>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>medialabel</sgmltag></term>
+    <listitem><para>To being installing <application>Frobnicator</application>, insert
+    the disc labelled <medialabel>Frobnicator Install</medialabel>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>menuchoice</sgmltag></term>
+    <listitem><para>You can open a new window by selecting <menuchoice>
+    <shortcut><keycombo><keycap>Ctrl</keycap><keycap>N</keycap></keycombo></shortcut>
+    <guimenu>File</guimenu><guimenuitem>New Window</guimenuitem></menuchoice>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>methodname</sgmltag></term>
+    <listitem><para>The <methodname>set_label()</methodname> method sets the text of the
+    button to <parameter><replaceable>label</replaceable></parameter>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>mousebutton</sgmltag></term>
+    <listitem><para>Click with the <mousebutton>middle</mousebutton> mouse button to
+    paste the contents of the PRIMARY selection.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>option</sgmltag></term>
+    <listitem><para>The <option>-rf</option> option to the <command>ls</command>
+    command has been known to cause mental anguish.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>optional</sgmltag></term>
+    <listitem>
+      <synopsis><command>yelp <optional><option>-p</option></optional></command></synopsis>
+    </listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>ooclass</sgmltag></term>
+    <term><sgmltag>ooexception</sgmltag></term>
+    <term><sgmltag>oointerface</sgmltag></term>
+    <listitem><para>The <ooclass><classname>Mallard</classname></ooclass> class
+    implements the <oointerface><interfacename>Quacks</interfacename></oointerface>
+    interface.  The <methodname>quack</methodname> method may throw the
+    <ooexception><exceptionname>Muted</exceptionname></ooexception>
+    exception.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>parameter</sgmltag></term>
+    <listitem><para>The <parameter>db2html.funcsynopsis.style</parameter> allows you
+    to set the style of function synopses to either <literal>'KR'</literal> or
+    <literal>'ANSI'</literal>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>personname</sgmltag></term>
+    <listitem><para>My name is
+    <personname><firstname>Shaun</firstname><surname>McCance</surname></personname>,
+    or <personname><firstname>Shaun</firstname><othername>William</othername>
+    <surname>McCance</surname></personname>.  You may also call me <personname>
+    <honorific>Mr</honorific><surname>Mojo</surname></personname>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>productname</sgmltag></term>
+    <listitem><para><productname class="trade">Frobnicator</productname> is the
+    only solution for frobnicating your files.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>prompt</sgmltag></term>
+    <listitem><para>The prototypical prompt is <prompt>$</prompt>, but most people
+    use something like <prompt>[<replaceable>user</replaceable>@<replaceable>host</replaceable> 
<replaceable>dir</replaceable>]</prompt>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>property</sgmltag></term>
+    <listitem><para>The <property>font_name</property> property can be used to set
+    the font on a widget in your <filename>.gtrc-2.0</filename> file.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>quote</sgmltag></term>
+    <listitem><para>He said, <quote>The Mallard said <quote>Quack</quote>.</quote></para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>replaceable</sgmltag></term>
+    <listitem><para>To view a DocBook file, simply run
+    <command>yelp <replaceable>file</replaceable></command>, where
+    <parameter><replaceable>file</replaceable></parameter>
+    is the name of the file.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>returnvalue</sgmltag></term>
+    <listitem><para>The template <function>i18n.locale</function> returns
+    <returnvalue>C</returnvalue> if no language has been defined in the
+    document.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>sgmltag</sgmltag></term>
+    <listitem><itemizedlist>
+      <listitem><para><sgmltag class="attribute">attribute</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="attvalue">attvalue</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="element">element</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="emptytag">emptytag</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="endtag">endtag</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="genentity">genentity</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="localname">localname</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="namespace">namespace</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="numcharref">numcharref</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="paramentity">paramentity</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="pi">pi</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="prefix">prefix</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="sgmlcomment">sgmlcomment</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="starttag">starttag</sgmltag></para></listitem>
+      <listitem><para><sgmltag class="xmlpi">xmlpi</sgmltag></para></listitem>
+    </itemizedlist></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>shortcut</sgmltag></term>
+    <listitem><para>You can open a new window by selecting <menuchoice>
+    <shortcut><keycombo><keycap>Ctrl</keycap><keycap>N</keycap></keycombo></shortcut>
+    <guimenu>File</guimenu><guimenuitem>New Window</guimenuitem></menuchoice>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>structfield</sgmltag></term>
+    <term><sgmltag>structname</sgmltag></term>
+    <listitem><para>The <structfield>reqs_pending</structfield> field is a list
+    of all the <structname>Request</structname> instances that are currently open
+    for this <structname>YelpDocument</structname>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>subscript</sgmltag></term>
+    <term><sgmltag>superscript</sgmltag></term>
+    <listitem><para>Here is a 
<sgmltag>subscript</sgmltag><subscript>sub<subscript>scr<subscript>ipt</subscript></subscript></subscript>.
+    Here is a 
<sgmltag>superscript</sgmltag><superscript>super<superscript>scr<superscript>ipt</superscript></superscript></superscript>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>symbol</sgmltag></term>
+    <listitem><para>No more than <symbol>MAX_DUCKS</symbol> ducks may exist
+    at any single time.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>systemitem</sgmltag></term>
+    <listitem><para>The GNOME web site is hosted on
+    <systemitem>window.gnome.org</systemitem>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>token</sgmltag></term>
+    <listitem><para>The character ∀ is parsed into <token>FORALL</token>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>trademark</sgmltag></term>
+    <listitem><para>Here are some trademarks: <trademark class="copyright">copyright</trademark>
+    <trademark class="registered">registered</trademark>
+    <trademark class="service">service</trademark>
+    <trademark class="trade">trade</trademark>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>type</sgmltag></term>
+    <listitem><para>Strings are stored as <type>gchar*</type> references.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>uri</sgmltag></term>
+    <listitem><para>Grab the latest Mallard stuff at
+    <uri>svn+ssh://svn.gnome.org/svn/gnome-doc-utils/trunk/sandbox/mallard/</uri>.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>userinput</sgmltag></term>
+    <listitem><para>Type <userinput>foo</userinput> at the prompt.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>varname</sgmltag></term>
+    <listitem><para>In Perl, <varname>@ARGV</varname> contains the command line
+    parameters used when the script was run.</para></listitem>
+  </varlistentry>
+
+  <varlistentry>
+    <term><sgmltag>wordasword</sgmltag></term>
+    <listitem><para>A <wordasword>term</wordasword> in Algebra has a very different
+    meaning than a <sgmltag>term</sgmltag> in DocBook.</para></listitem>
+  </varlistentry>
+
+</variablelist>
+</chapter>
diff --git a/test/docbook/source/lists.xml b/test/docbook/source/lists.xml
new file mode 100644
index 00000000..dc6fa571
--- /dev/null
+++ b/test/docbook/source/lists.xml
@@ -0,0 +1,223 @@
+<chapter xmlns="http://docbook.org/ns/docbook";
+         id="lists">
+<title>List Elements</title>
+
+<section id="itemizedlist">
+  <title>Itemized Lists</title>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <itemizedlist>
+    <title>An Itemized List</title>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    <listitem>
+      <para>Vivamus fermentum orci. Nullam posuere sem ut lectus. Donec viverra
+      tristique neque. Proin ultricies bibendum enim amet.</para>
+      <para>Phasellus mattis rhoncus nibh. Nulla nec pede varius ligula posuere
+      iaculis. Sed hendrerit nunc ac nunc. Suspendisse id.</para>
+    </listitem>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+  </itemizedlist>
+
+  <itemizedlist mark="box">
+    <title>Another Itemized List</title>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+  </itemizedlist>
+
+</section> <!-- itemizedlist -->
+
+<section id="orderedlist">
+  <title>Ordered Lists</title>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <orderedlist>
+    <title>An Ordered List</title>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    <listitem>
+      <para>Vivamus fermentum orci. Nullam posuere sem ut lectus. Donec viverra
+      tristique neque. Proin ultricies bibendum enim amet.</para>
+      <para>Phasellus mattis rhoncus nibh. Nulla nec pede varius ligula posuere
+      iaculis. Sed hendrerit nunc ac nunc. Suspendisse id.</para>
+    </listitem>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+  </orderedlist>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <orderedlist continuation="continues">
+    <title>A Continuation</title>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+  </orderedlist>
+
+  <orderedlist>
+    <title>Some Nested Lists</title>
+    <listitem>
+      <para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+      consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para>
+      <orderedlist numeration="lowerroman">
+        <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+        consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+        <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+        consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+      </orderedlist>
+    </listitem>
+    <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+    consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    <listitem>
+      <para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+      consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para>
+      <orderedlist numeration="loweralpha">
+        <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+        consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+        <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+        consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+      </orderedlist>
+    </listitem>
+  </orderedlist>
+
+</section> <!-- orderedlist -->
+
+<section id="simplelist">
+  <title>Simple Lists</title>
+
+  <para>Here is an inline list:
+  <simplelist type="inline">
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+  </simplelist>.</para>
+
+  <para>Here are some horizontal lists:</para>
+
+  <simplelist type="horiz" columns="1">
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+  </simplelist>
+  <simplelist type="horiz" columns="2">
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+  </simplelist>
+  <simplelist type="horiz" columns="3">
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+  </simplelist>
+  <simplelist type="horiz" columns="3">
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+  </simplelist>
+
+  <para>Here are some vertical lists:</para>
+
+  <simplelist type="vert" columns="1">
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+  </simplelist>
+  <simplelist type="vert" columns="2">
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+  </simplelist>
+  <simplelist type="vert" columns="3">
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+    <member>Fe</member>
+    <member>Fi</member>
+    <member>Fo</member>
+    <member>Fum</member>
+  </simplelist>
+
+</section> <!-- simplelist -->
+
+<section id="variablelist">
+  <title>Variable Lists</title>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+  <variablelist>
+    <title>A Variable List</title>
+    <varlistentry>
+      <term>Fe</term>
+      <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+      consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    </varlistentry>
+    <varlistentry>
+      <term>Fi</term>
+      <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+      consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    </varlistentry>
+    <varlistentry>
+      <term>Fo</term>
+      <term>Fum</term>
+      <listitem><para>Aenean adipiscing adipiscing neque. Donec viverra, pede ac
+      consequat imperdiet, arcu risus mollis neque, vitae volutpat.</para></listitem>
+    </varlistentry>
+  </variablelist>
+
+  <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed risus dui,
+  faucibus at, blandit eu, congue in, sem. Suspendisse nec mi. Sed vel augue.
+  Cras egestas. Vivamus nisi. Fusce neque. Aenean posuere, orci non lacinia
+  consectetuer, neque libero semper metus, ut ullamcorper eros lorem at tellus.
+  Ut ante tellus, iaculis at, tincidunt quis, ultrices at, ligula. Pellentesque
+  porttitor condimentum nulla.</para>
+
+</section> <!-- variablelist -->
+
+<!-- FIXME:
+segmentedlist
+procedure
+-->
+
+</chapter>
diff --git a/test/docbook/source/reference.xml b/test/docbook/source/reference.xml
new file mode 100644
index 00000000..2a7dc234
--- /dev/null
+++ b/test/docbook/source/reference.xml
@@ -0,0 +1,36 @@
+<reference id="reference">
+<title>Reference</title>
+<partintro>
+<para>This is a collection of reference entries</para>
+</partintro>
+
+<refentry id="ls">
+<refmeta>
+<refentrytitle>ls</refentrytitle>
+<manvolnum>1</manvolnum>
+</refmeta>
+
+<refnamediv>
+<refname>ls</refname>
+<refpurpose>list contents of a directory</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv id="ls-synops">
+<cmdsynopsis>
+<command>/usr/bin/ls</command>
+<arg choice="opt">
+  <option>aAbcCdfFgilLmnopqrRstux1</option>
+</arg>
+<arg choice="opt" rep="repeat">file</arg>
+</cmdsynopsis>
+</refsynopsisdiv>
+
+<refsect1 id="ls-desc"><title>Description</title>
+<para>
+For each file that is a directory, <command>ls</command> lists the contents of
+the directory; for each file that is an ordinary file, <command>ls</command>
+repeats its name and any other information requested.
+</para>
+</refsect1>
+</refentry>
+</reference>
diff --git a/test/mallard/README b/test/mallard/README
new file mode 100644
index 00000000..6b0bcbee
--- /dev/null
+++ b/test/mallard/README
@@ -0,0 +1,13 @@
+This document is intended to test out different features and style
+changes for Mallard documents. If you need to test things not in
+this document, feel free to add stuff to this document.
+
+To try things out, just make changes directly to the files in your
+checkout of yelp-xsl. You don't have to build or install your copy
+of yelp-xsl. Just build this preview document. To build this preview
+document, just run:
+
+  ./build.sh
+
+You do need yelp-tools installed for the yelp-build command. It's in
+your distro's packages, and you might have it installed already anyway.
diff --git a/test/mallard/build.sh b/test/mallard/build.sh
new file mode 100755
index 00000000..e7b9d41f
--- /dev/null
+++ b/test/mallard/build.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+yelp-build cache source/*.page
+if [ ! -d output ]; then mkdir output; fi
+rm -f output/*.*
+cp ../../js/highlight.pack.js output/
+for page in source/*.page; do
+    xsltproc \
+        --stringparam mal.cache.file ../index.cache \
+        -o output/ \
+        ../../xslt/mallard/html/mal2html.xsl \
+        $page;
+done
+rm index.cache
diff --git a/test/lipsum/index.page b/test/mallard/source/index.page
similarity index 100%
rename from test/lipsum/index.page
rename to test/mallard/source/index.page
diff --git a/test/lipsum/note1.page b/test/mallard/source/note1.page
similarity index 100%
rename from test/lipsum/note1.page
rename to test/mallard/source/note1.page
diff --git a/test/lipsum/task1.page b/test/mallard/source/task1.page
similarity index 100%
rename from test/lipsum/task1.page
rename to test/mallard/source/task1.page
diff --git a/test/syntax/README b/test/syntax/README
new file mode 100644
index 00000000..9a8d86ca
--- /dev/null
+++ b/test/syntax/README
@@ -0,0 +1,9 @@
+This test shows the syntax highlighting for different languages in
+different formats. yelp-xsl uses highlight.js for syntax highlighting.
+
+To try things out, just make changes directly to the files in your
+checkout of yelp-xsl. You don't have to build or install your copy
+of yelp-xsl. Just build this preview document. To build this preview
+document, just run:
+
+  ./build.sh
diff --git a/test/syntax/build.sh b/test/syntax/build.sh
new file mode 100755
index 00000000..b5fee4b3
--- /dev/null
+++ b/test/syntax/build.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+if [ ! -d output ]; then mkdir output; fi
+
+# Mallard
+if [ ! -d output/mallard ]; then mkdir output/mallard; fi
+rm -f output/mallard/*.*
+cp ../../js/highlight.pack.js output/mallard/
+xsltproc -o output/mallard/ --xinclude \
+       ../../xslt/mallard/html/mal2html.xsl \
+       source/mallard.page
+
+# DocBook
+if [ ! -d output/docbook ]; then mkdir output/docbook; fi
+rm -f output/docbook/*.*
+cp ../../js/highlight.pack.js output/docbook/
+xsltproc -o output/docbook/ --xinclude \
+       --param db.chunk.max_depth 0 \
+       ../../xslt/docbook/html/db2html.xsl \
+       source/docbook.docbook
+
+# DITA
+if [ ! -d output/dita ]; then mkdir output/dita; fi
+rm -f output/dita/*.*
+cp ../../js/highlight.pack.js output/dita/
+xsltproc -o output/dita/ --xinclude \
+       ../../xslt/dita/html/dita2html.xsl \
+       source/dita.dita
diff --git a/test/syntax/code/actionscript b/test/syntax/source/code/actionscript
similarity index 100%
rename from test/syntax/code/actionscript
rename to test/syntax/source/code/actionscript
diff --git a/test/syntax/code/apache b/test/syntax/source/code/apache
similarity index 100%
rename from test/syntax/code/apache
rename to test/syntax/source/code/apache
diff --git a/test/syntax/code/asciidoc b/test/syntax/source/code/asciidoc
similarity index 100%
rename from test/syntax/code/asciidoc
rename to test/syntax/source/code/asciidoc
diff --git a/test/syntax/code/awk b/test/syntax/source/code/awk
similarity index 100%
rename from test/syntax/code/awk
rename to test/syntax/source/code/awk
diff --git a/test/syntax/code/bash b/test/syntax/source/code/bash
similarity index 100%
rename from test/syntax/code/bash
rename to test/syntax/source/code/bash
diff --git a/test/syntax/code/clojure b/test/syntax/source/code/clojure
similarity index 100%
rename from test/syntax/code/clojure
rename to test/syntax/source/code/clojure
diff --git a/test/syntax/code/cmake b/test/syntax/source/code/cmake
similarity index 100%
rename from test/syntax/code/cmake
rename to test/syntax/source/code/cmake
diff --git a/test/syntax/code/cpp b/test/syntax/source/code/cpp
similarity index 100%
rename from test/syntax/code/cpp
rename to test/syntax/source/code/cpp
diff --git a/test/syntax/code/cs b/test/syntax/source/code/cs
similarity index 100%
rename from test/syntax/code/cs
rename to test/syntax/source/code/cs
diff --git a/test/syntax/code/css b/test/syntax/source/code/css
similarity index 100%
rename from test/syntax/code/css
rename to test/syntax/source/code/css
diff --git a/test/syntax/code/d b/test/syntax/source/code/d
similarity index 100%
rename from test/syntax/code/d
rename to test/syntax/source/code/d
diff --git a/test/syntax/code/diff b/test/syntax/source/code/diff
similarity index 100%
rename from test/syntax/code/diff
rename to test/syntax/source/code/diff
diff --git a/test/syntax/code/django b/test/syntax/source/code/django
similarity index 100%
rename from test/syntax/code/django
rename to test/syntax/source/code/django
diff --git a/test/syntax/code/dockerfile b/test/syntax/source/code/dockerfile
similarity index 100%
rename from test/syntax/code/dockerfile
rename to test/syntax/source/code/dockerfile
diff --git a/test/syntax/code/dos b/test/syntax/source/code/dos
similarity index 100%
rename from test/syntax/code/dos
rename to test/syntax/source/code/dos
diff --git a/test/syntax/code/ducktype b/test/syntax/source/code/ducktype
similarity index 100%
rename from test/syntax/code/ducktype
rename to test/syntax/source/code/ducktype
diff --git a/test/syntax/code/erb b/test/syntax/source/code/erb
similarity index 100%
rename from test/syntax/code/erb
rename to test/syntax/source/code/erb
diff --git a/test/syntax/code/fsharp b/test/syntax/source/code/fsharp
similarity index 100%
rename from test/syntax/code/fsharp
rename to test/syntax/source/code/fsharp
diff --git a/test/syntax/code/go b/test/syntax/source/code/go
similarity index 100%
rename from test/syntax/code/go
rename to test/syntax/source/code/go
diff --git a/test/syntax/code/haml b/test/syntax/source/code/haml
similarity index 100%
rename from test/syntax/code/haml
rename to test/syntax/source/code/haml
diff --git a/test/syntax/code/haskell b/test/syntax/source/code/haskell
similarity index 100%
rename from test/syntax/code/haskell
rename to test/syntax/source/code/haskell
diff --git a/test/syntax/code/http b/test/syntax/source/code/http
similarity index 100%
rename from test/syntax/code/http
rename to test/syntax/source/code/http
diff --git a/test/syntax/code/ini b/test/syntax/source/code/ini
similarity index 100%
rename from test/syntax/code/ini
rename to test/syntax/source/code/ini
diff --git a/test/syntax/code/java b/test/syntax/source/code/java
similarity index 100%
rename from test/syntax/code/java
rename to test/syntax/source/code/java
diff --git a/test/syntax/code/javascript b/test/syntax/source/code/javascript
similarity index 100%
rename from test/syntax/code/javascript
rename to test/syntax/source/code/javascript
diff --git a/test/syntax/code/json b/test/syntax/source/code/json
similarity index 100%
rename from test/syntax/code/json
rename to test/syntax/source/code/json
diff --git a/test/syntax/code/lisp b/test/syntax/source/code/lisp
similarity index 100%
rename from test/syntax/code/lisp
rename to test/syntax/source/code/lisp
diff --git a/test/syntax/code/lua b/test/syntax/source/code/lua
similarity index 100%
rename from test/syntax/code/lua
rename to test/syntax/source/code/lua
diff --git a/test/syntax/code/makefile b/test/syntax/source/code/makefile
similarity index 100%
rename from test/syntax/code/makefile
rename to test/syntax/source/code/makefile
diff --git a/test/syntax/code/markdown b/test/syntax/source/code/markdown
similarity index 100%
rename from test/syntax/code/markdown
rename to test/syntax/source/code/markdown
diff --git a/test/syntax/code/matlab b/test/syntax/source/code/matlab
similarity index 100%
rename from test/syntax/code/matlab
rename to test/syntax/source/code/matlab
diff --git a/test/syntax/code/nginx b/test/syntax/source/code/nginx
similarity index 100%
rename from test/syntax/code/nginx
rename to test/syntax/source/code/nginx
diff --git a/test/syntax/code/objectivec b/test/syntax/source/code/objectivec
similarity index 100%
rename from test/syntax/code/objectivec
rename to test/syntax/source/code/objectivec
diff --git a/test/syntax/code/perl b/test/syntax/source/code/perl
similarity index 100%
rename from test/syntax/code/perl
rename to test/syntax/source/code/perl
diff --git a/test/syntax/code/php b/test/syntax/source/code/php
similarity index 100%
rename from test/syntax/code/php
rename to test/syntax/source/code/php
diff --git a/test/syntax/code/python b/test/syntax/source/code/python
similarity index 100%
rename from test/syntax/code/python
rename to test/syntax/source/code/python
diff --git a/test/syntax/code/r b/test/syntax/source/code/r
similarity index 100%
rename from test/syntax/code/r
rename to test/syntax/source/code/r
diff --git a/test/syntax/code/ruby b/test/syntax/source/code/ruby
similarity index 100%
rename from test/syntax/code/ruby
rename to test/syntax/source/code/ruby
diff --git a/test/syntax/code/rust b/test/syntax/source/code/rust
similarity index 100%
rename from test/syntax/code/rust
rename to test/syntax/source/code/rust
diff --git a/test/syntax/code/scala b/test/syntax/source/code/scala
similarity index 100%
rename from test/syntax/code/scala
rename to test/syntax/source/code/scala
diff --git a/test/syntax/code/scheme b/test/syntax/source/code/scheme
similarity index 100%
rename from test/syntax/code/scheme
rename to test/syntax/source/code/scheme
diff --git a/test/syntax/code/shell b/test/syntax/source/code/shell
similarity index 100%
rename from test/syntax/code/shell
rename to test/syntax/source/code/shell
diff --git a/test/syntax/code/smalltalk b/test/syntax/source/code/smalltalk
similarity index 100%
rename from test/syntax/code/smalltalk
rename to test/syntax/source/code/smalltalk
diff --git a/test/syntax/code/sql b/test/syntax/source/code/sql
similarity index 100%
rename from test/syntax/code/sql
rename to test/syntax/source/code/sql
diff --git a/test/syntax/code/tcl b/test/syntax/source/code/tcl
similarity index 100%
rename from test/syntax/code/tcl
rename to test/syntax/source/code/tcl
diff --git a/test/syntax/code/tex b/test/syntax/source/code/tex
similarity index 100%
rename from test/syntax/code/tex
rename to test/syntax/source/code/tex
diff --git a/test/syntax/code/vala b/test/syntax/source/code/vala
similarity index 100%
rename from test/syntax/code/vala
rename to test/syntax/source/code/vala
diff --git a/test/syntax/code/xml b/test/syntax/source/code/xml
similarity index 100%
rename from test/syntax/code/xml
rename to test/syntax/source/code/xml
diff --git a/test/syntax/code/xquery b/test/syntax/source/code/xquery
similarity index 100%
rename from test/syntax/code/xquery
rename to test/syntax/source/code/xquery
diff --git a/test/syntax/code/yaml b/test/syntax/source/code/yaml
similarity index 100%
rename from test/syntax/code/yaml
rename to test/syntax/source/code/yaml
diff --git a/test/syntax/dita.dita b/test/syntax/source/dita.dita
similarity index 100%
rename from test/syntax/dita.dita
rename to test/syntax/source/dita.dita
diff --git a/test/syntax/docbook.docbook b/test/syntax/source/docbook.docbook
similarity index 100%
rename from test/syntax/docbook.docbook
rename to test/syntax/source/docbook.docbook
diff --git a/test/syntax/mallard.page b/test/syntax/source/mallard.page
similarity index 100%
rename from test/syntax/mallard.page
rename to test/syntax/source/mallard.page
diff --git a/xslt/common/css/README b/xslt/common/css/README
index e79f97b3..fdc2b1b0 100644
--- a/xslt/common/css/README
+++ b/xslt/common/css/README
@@ -16,6 +16,6 @@ Here's what each file is:
 * mallard.css.tmpl  - CSS for element styles specific to Mallard
 * docbook.css.tmpl  - CSS for element styles specific to DocBook
 
-The easiest way to test your changes to these files is with the lipsum test document,
-found under test/lipsum from the root of this repository.
+The easiest way to test your changes to these files is with the mallard test document,
+found under test/mallard from the root of this repository.
 That directory has a README that explains how to use it to test changes.


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