[yelp-xsl] Clean up tests
- From: Shaun McCance <shaunm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [yelp-xsl] Clean up tests
- Date: Thu, 31 Dec 2020 02:28:23 +0000 (UTC)
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 & 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 & 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 "<section>"; }
+</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&</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&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]