summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@src.gnome.org>2003-10-13 01:42:49 +0000
committerShaun McCance <shaunm@src.gnome.org>2003-10-13 01:42:49 +0000
commite1fac4bc261671a7e8d1bd58226c0874aaf2ffbe (patch)
tree1145f40305cb207b2ad48d86dcf7794abe8f4195
parent04ab1fd30a7b85392e911db39bf291a0cdeb0416 (diff)
downloadyelp-e1fac4bc261671a7e8d1bd58226c0874aaf2ffbe.tar.gz
- Revert change for making navbars in C. Should not be necessary with new
* src/yelp-cache.c: * src/yelp-cache.h: * src/yelp-db2html.c: * src/yelp-reader.c: * src/yelp-scrollkeeper.c: * src/yelp-view-content.c: - Revert change for making navbars in C. Should not be necessary with new stylesheets. - Use new stylesheets * stylesheets/db2html*.xsl: * stylesheets/yelp-customization.xsl: - Uber-fast new stylesheets * stylesheets/Makefile.am: * stylesheets/docbook/Makefile.am: - Use new stylesheets
-rw-r--r--ChangeLog12
-rw-r--r--src/.cvsignore20
-rw-r--r--src/yelp-cache.c32
-rw-r--r--src/yelp-cache.h21
-rw-r--r--src/yelp-db2html.c34
-rw-r--r--src/yelp-reader.c121
-rw-r--r--src/yelp-scrollkeeper.c12
-rw-r--r--src/yelp-view-content.c104
-rw-r--r--stylesheets/ChangeLog10
-rw-r--r--stylesheets/Makefile.am40
-rw-r--r--stylesheets/db2html-admon.xsl40
-rw-r--r--stylesheets/db2html-biblio.xsl46
-rw-r--r--stylesheets/db2html-block.xsl305
-rw-r--r--stylesheets/db2html-callout.xsl38
-rw-r--r--stylesheets/db2html-chunk.xsl305
-rw-r--r--stylesheets/db2html-common.xsl92
-rw-r--r--stylesheets/db2html-division.xsl288
-rw-r--r--stylesheets/db2html-ebnf.xsl38
-rw-r--r--stylesheets/db2html-footnote.xsl14
-rw-r--r--stylesheets/db2html-formal.xsl13
-rw-r--r--stylesheets/db2html-glossary.xsl95
-rw-r--r--stylesheets/db2html-html.xsl203
-rw-r--r--stylesheets/db2html-index.xsl46
-rw-r--r--stylesheets/db2html-inline.xsl653
-rw-r--r--stylesheets/db2html-list.xsl283
-rw-r--r--stylesheets/db2html-lists.xsl85
-rw-r--r--stylesheets/db2html-math.xsl22
-rw-r--r--stylesheets/db2html-media.xsl199
-rw-r--r--stylesheets/db2html-navbar.xsl154
-rw-r--r--stylesheets/db2html-node.xsl771
-rw-r--r--stylesheets/db2html-param.xsl49
-rw-r--r--stylesheets/db2html-qanda.xsl30
-rw-r--r--stylesheets/db2html-refentry.xsl95
-rw-r--r--stylesheets/db2html-section.xsl133
-rw-r--r--stylesheets/db2html-suppressed.xsl102
-rw-r--r--stylesheets/db2html-synopsis.xsl621
-rw-r--r--stylesheets/db2html-table.xsl603
-rw-r--r--stylesheets/db2html-title.xsl129
-rw-r--r--stylesheets/db2html-titlepage.xsl402
-rw-r--r--stylesheets/db2html-tmp.xsl5
-rw-r--r--stylesheets/db2html-toc.xsl112
-rw-r--r--stylesheets/db2html-xref.xsl112
-rw-r--r--stylesheets/db2html.xsl52
-rw-r--r--stylesheets/docbook/Makefile.am47
-rw-r--r--stylesheets/yelp-customization.xsl810
45 files changed, 6377 insertions, 1021 deletions
diff --git a/ChangeLog b/ChangeLog
index 035e07dd..fc0a5977 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2003-10-12 Shaun McCance <shaunm@gnome.org>
+
+ * src/yelp-cache.c:
+ * src/yelp-cache.h:
+ * src/yelp-db2html.c:
+ * src/yelp-reader.c:
+ * src/yelp-scrollkeeper.c:
+ * src/yelp-view-content.c:
+ - Revert change for making navbars in C. Should not be necessary
+ with new stylesheets.
+ - Use new stylesheets
+
2003-10-06 Christian Rose <menthos@menthos.com>
* configure.in: Added "mr" to ALL_LINGUAS.
diff --git a/src/.cvsignore b/src/.cvsignore
deleted file mode 100644
index 508f2c41..00000000
--- a/src/.cvsignore
+++ /dev/null
@@ -1,20 +0,0 @@
-Makefile
-Makefile.in
-.deps
-.libs
-*.o
-ghelp-test
-libvfs-help.la
-*.lo
-GNOME_Yelp-*
-GNOME_Yelp.h
-GNOME_Yelp.server
-gnome_yelp_idl_stamp
-test-uri
-test-reader
-yelp-marshal.c
-yelp-marshal.h
-yelp
-yelp-db2html
-yelp-pregenerate
-core*
diff --git a/src/yelp-cache.c b/src/yelp-cache.c
index 391c7a98..bb7b0757 100644
--- a/src/yelp-cache.c
+++ b/src/yelp-cache.c
@@ -30,17 +30,11 @@
GHashTable *cache_table;
GMutex *cache_mutex;
-GHashTable *links_table;
-GMutex *links_mutex;
-
void
yelp_cache_init (void)
{
cache_mutex = g_mutex_new ();
cache_table = g_hash_table_new (g_str_hash, g_str_equal);
-
- links_mutex = g_mutex_new ();
- links_table = g_hash_table_new (g_str_hash, g_str_equal);
}
const gchar *
@@ -57,20 +51,6 @@ yelp_cache_lookup (const gchar *path)
return ret_val;
}
-YelpNavLinks *
-yelp_cache_lookup_links (const gchar *path)
-{
- YelpNavLinks *ret_val;
-
- g_mutex_lock (links_mutex);
-
- ret_val = (YelpNavLinks *) g_hash_table_lookup (links_table, path);
-
- g_mutex_unlock (links_mutex);
-
- return ret_val;
-}
-
void
yelp_cache_add (const gchar *path, const gchar *html)
{
@@ -80,15 +60,3 @@ yelp_cache_add (const gchar *path, const gchar *html)
g_mutex_unlock (cache_mutex);
}
-
-void
-yelp_cache_add_links (const gchar *path, const YelpNavLinks *links)
-{
- YelpNavLinks *new_links;
-
- g_mutex_lock (links_mutex);
-
- g_hash_table_insert (links_table, (gchar *) path, links);
-
- g_mutex_unlock (links_mutex);
-}
diff --git a/src/yelp-cache.h b/src/yelp-cache.h
index 0c1aad50..bd6f74b0 100644
--- a/src/yelp-cache.h
+++ b/src/yelp-cache.h
@@ -27,31 +27,10 @@
#include "yelp-uri.h"
-typedef struct _YelpNavLinks YelpNavLinks;
-
-#define YELP_NAV_LINKS(x) ((YelpNavLinks *) x)
-
-struct _YelpNavLinks {
- gchar *prev_link_uri;
- gchar *next_link_uri;
- gchar *prev_link_title;
- gchar *next_link_title;
- gchar *prev_link_text;
- gchar *next_link_text;
- gchar *up_link_uri;
- gchar *up_link_title;
-};
-
void yelp_cache_init (void);
const gchar * yelp_cache_lookup (const gchar *path);
void yelp_cache_add (const gchar *path,
const gchar *html);
-
-YelpNavLinks * yelp_cache_lookup_links (const gchar *path);
-
-void yelp_cache_add_links (const gchar *path,
- const YelpNavLinks *links);
-
#endif /* __YELP_CACHE_H__ */
diff --git a/src/yelp-db2html.c b/src/yelp-db2html.c
index 6c9d8c61..0b4aabc2 100644
--- a/src/yelp-db2html.c
+++ b/src/yelp-db2html.c
@@ -66,28 +66,16 @@ main (gint argc, gchar **argv)
const gchar *params[16 + 1];
gchar *pathname;
gchar *docpath;
- gboolean gen_links;
db_doc = NULL;
putenv ("XML_CATALOG_FILES=" DATADIR "/yelp/catalog");
if (argc < 2) {
- g_print ("Usage 'yelp-db2html [-n] url'\n");
+ g_print ("Usage 'yelp-db2html url'\n");
exit (1);
}
- if (!strcmp (argv[1], "-n")) {
- if (argc < 3) {
- g_print ("Usage 'yelp-db2html [-n] url'\n");
- exit (1);
- }
-
- docpath = argv[2];
- gen_links = FALSE;
- } else {
- docpath = argv[1];
- gen_links = TRUE;
- }
+ docpath = argv[1];
if (!g_file_test (docpath, G_FILE_TEST_EXISTS)) {
g_warning ("'%s' doesn't exist.", docpath);
@@ -129,19 +117,13 @@ main (gint argc, gchar **argv)
pathname = g_path_get_dirname (docpath);
/* set params to be passed to stylesheet */
- params[0] = "yelp_docname";
+ params[0] = "doc_name";
params[1] = g_strconcat("\"", docpath, "\"", NULL) ;
- params[2] = "yelp_pathname";
- params[3] = g_strconcat("\"", pathname, "\"", NULL) ;
- params[4] = "yelp_stylesheet_path";
- params[5] = g_strconcat("\"", DB_STYLESHEET_PATH, "\"", NULL) ;
- params[6] = "yelp_max_chunk_depth";
- params[7] = "2";
- params[8] = "yelp_generate_navbar";
- params[9] = (gen_links ? "1" : "0");
- params[10] = "yelp_chunk_method";
- params[11] = "'yelp'";
- params[12] = NULL;
+ params[2] = "doc_path";
+ params[3] = g_strconcat("\"file://", pathname, "/\"", NULL) ;
+ params[4] = "stylesheet_path";
+ params[5] = g_strconcat("\"file://", DB_STYLESHEET_PATH, "/\"", NULL) ;
+ params[6] = NULL;
g_free (pathname);
diff --git a/src/yelp-reader.c b/src/yelp-reader.c
index 6eac8e80..b018fd7b 100644
--- a/src/yelp-reader.c
+++ b/src/yelp-reader.c
@@ -94,7 +94,7 @@ static void reader_q_data_free (ReaderQueueData *q_data);
static void reader_th_data_free (ReaderThreadData *th_data);
#endif
static gchar * reader_get_chunk (const gchar *document,
- YelpURI *uri);
+ const gchar *section);
static gchar *
reader_look_for_cached_help_file (const gchar *url);
@@ -261,15 +261,9 @@ reader_convert_start (ReaderThreadData *th_data)
break;
case YELP_URI_TYPE_DOCBOOK_XML:
case YELP_URI_TYPE_DOCBOOK_SGML:
- if (yelp_cache_lookup_links (yelp_uri_to_string (uri))) {
- command_line = g_strdup_printf ("%s/yelp-db2html -n %s",
- SERVERDIR,
- yelp_uri_get_path (uri));
- } else {
- command_line = g_strdup_printf ("%s/yelp-db2html %s",
- SERVERDIR,
- yelp_uri_get_path (uri));
- }
+ command_line = g_strdup_printf ("%s/yelp-db2html %s",
+ SERVERDIR,
+ yelp_uri_get_path (uri));
break;
default:
/* Set error */
@@ -318,7 +312,14 @@ reader_convert_start (ReaderThreadData *th_data)
yelp_uri_get_type (uri) == YELP_URI_TYPE_DOCBOOK_SGML) {
gchar *chunk;
- chunk = reader_get_chunk (q_data->data, uri);
+ if (yelp_uri_get_section (uri) &&
+ strcmp (yelp_uri_get_section (uri), "")) {
+ chunk = reader_get_chunk (q_data->data,
+ yelp_uri_get_section (uri));
+ } else {
+ chunk = reader_get_chunk (q_data->data,
+ "toc");
+ }
g_free (q_data->data);
q_data->data = chunk;
@@ -633,30 +634,25 @@ reader_th_data_free (ReaderThreadData *th_data)
#endif
static gchar *
-reader_get_chunk (const gchar *document, YelpURI *uri)
+reader_get_chunk (const gchar *document, const gchar *section)
{
- const gchar *section;
- gchar *header;
- gchar *chunk;
- const gchar *footer;
- gchar *ret_val;
- const gchar *start;
- const gchar *end;
- gchar *tag;
- GTimer *timer;
- YelpNavLinks *links;
- const gchar *nav_top;
- const gchar *nav_bottom;
-
- // timer = g_timer_new ();
-
- section = yelp_uri_get_section (uri);
- if (!section || !strcmp (section, ""))
- section = "toc";
+ gchar *header;
+ gchar *chunk;
+ const gchar *footer;
+ gchar *ret_val;
+ const gchar *start;
+ const gchar *end;
+ gchar *tag;
+ GTimer *timer;
+
+/* g_print ("%s\n", document); */
+
+ timer = g_timer_new ();
end = strstr (document, "<!-- End of header -->");
if (!end) {
+/* g_warning ("Wrong type of document\n"); */
return g_strdup (document);
}
@@ -667,6 +663,7 @@ reader_get_chunk (const gchar *document, YelpURI *uri)
g_free (tag);
if (!start) {
+/* g_warning ("Document doesn't include section: '%s'", section); */
g_free (header);
return g_strdup (document);
@@ -675,6 +672,8 @@ reader_get_chunk (const gchar *document, YelpURI *uri)
end = strstr (start, "<!-- End of chunk -->");
if (!end) {
+/* g_warning ("Document is doesn't contain end tag for section: %s", */
+/* section); */
g_free (header);
return g_strdup (document);
@@ -685,59 +684,15 @@ reader_get_chunk (const gchar *document, YelpURI *uri)
footer = strstr (document, "<!-- Start of footer -->");
if (!footer) {
+/* g_warning ("Couldn't find footer in document"); */
g_free (header);
g_free (chunk);
return g_strdup (document);
}
-
- links = yelp_cache_lookup_links (yelp_uri_to_string (uri));
-
- if (!links) {
- nav_top = "";
- nav_bottom = "";
- } else {
- nav_top = g_strconcat ("<table width='100%'><tr>",
- "<td width='40%' align='left'>",
- "<a accesskey='p' href='",
- links->prev_link_uri, "'>",
- links->prev_link_title,
- "</a></td>",
- "<td width='40%' align='right'>",
- "<a accesskey='n' href='",
- links->next_link_uri, "'>",
- links->next_link_title,
- "</a></td>",
- "</tr></table>",
- "<hr>",
- NULL);
- nav_bottom = g_strconcat ("<hr class='bottom'>",
- "<table width='100%'><tr>",
- "<td width='40%' align='left'>",
- "<a accesskey='p' href='",
- links->prev_link_uri, "'>",
- links->prev_link_title,
- "</a><br>",
- links->prev_link_text,
- "</td>",
- "<td width='20%' align='center'>",
- "<a accesskey='u' href='",
- links->up_link_uri, "'>",
- links->up_link_title,
- "</a></td>",
- "<td width='40%' align='right'>",
- "<a accesskey='n' href='",
- links->next_link_uri, "'>",
- links->next_link_title,
- "</a><br>",
- links->next_link_text,
- "</td>",
- "</tr></table>",
- NULL);
- }
-
- ret_val = g_strconcat (header, nav_top, chunk, nav_bottom, footer, NULL);
-
+
+ ret_val = g_strconcat (header, chunk, footer, NULL);
+
g_free (header);
g_free (chunk);
@@ -947,8 +902,14 @@ yelp_reader_start (YelpReader *reader, YelpURI *uri)
} else {
document = read_document;
}
-
- chunk = reader_get_chunk (document, new_uri);
+
+ if (yelp_uri_get_section (new_uri) &&
+ strcmp (yelp_uri_get_section (new_uri), "")) {
+ chunk = reader_get_chunk (document,
+ yelp_uri_get_section (new_uri));
+ } else {
+ chunk = reader_get_chunk (document, "toc");
+ }
g_free (read_document);
yelp_uri_unref (new_uri);
diff --git a/src/yelp-scrollkeeper.c b/src/yelp-scrollkeeper.c
index 216b1439..edcd7eb5 100644
--- a/src/yelp-scrollkeeper.c
+++ b/src/yelp-scrollkeeper.c
@@ -593,7 +593,6 @@ yelp_scrollkeeper_get_toc_tree (const gchar *docpath)
xmlNode *xml_node;
GNode *tree;
gchar *full_path;
- gchar *title_path;
g_return_val_if_fail (docpath != NULL, NULL);
@@ -620,22 +619,11 @@ yelp_scrollkeeper_get_toc_tree (const gchar *docpath)
xml_node = doc->xmlRootNode->xmlChildrenNode;
full_path = g_strconcat ("ghelp:", docpath, NULL);
- title_path = g_strconcat (full_path, "?title-page", NULL);
-
- g_node_append_data (tree,
- yelp_section_new (YELP_SECTION_DOCUMENT_SECTION,
- _("About This Document"),
- yelp_uri_new (title_path) ));
- g_node_append_data (tree,
- yelp_section_new (YELP_SECTION_DOCUMENT_SECTION,
- _("Contents"),
- yelp_uri_new (full_path) ));
for (; xml_node != NULL; xml_node = xml_node->next) {
scrollkeeper_parse_toc_section (tree, xml_node, full_path);
}
- g_free (title_path);
g_free (full_path);
return tree;
diff --git a/src/yelp-view-content.c b/src/yelp-view-content.c
index 972e69ce..c90c66b5 100644
--- a/src/yelp-view-content.c
+++ b/src/yelp-view-content.c
@@ -39,7 +39,6 @@
#include "yelp-scrollkeeper.h"
#include "yelp-util.h"
#include "yelp-uri.h"
-#include "yelp-cache.h"
#include "yelp-view-content.h"
#define d(x)
@@ -74,9 +73,6 @@ static void content_insert_tree (YelpViewContent *content,
GNode *node);
static void content_set_tree (YelpViewContent *content,
GNode *node);
-gboolean content_generate_links (GNode *node,
- gpointer data);
-GNode * node_last_ancestor (GNode *node);
static void
content_show_uri (YelpView *view,
YelpURI *uri,
@@ -424,98 +420,6 @@ content_set_tree (YelpViewContent *content, GNode *node)
}
}
-
-GNode *
-node_last_ancestor (GNode *node)
-{
- if (node->children)
- return node_last_ancestor (g_node_last_child (node));
- else
- return node;
-}
-
-
-gboolean
-content_generate_links (GNode *node, gpointer data)
-{
- GNode *prev_node;
- GNode *next_node;
- GNode *up_node;
- YelpURI *prev_uri;
- YelpURI *next_uri;
- YelpURI *up_uri;
- YelpNavLinks *links = g_new0 (YelpNavLinks, 1);
- YelpURI *uri;
-
- if (!node->data)
- return FALSE;
-
- uri = YELP_SECTION (node->data)->uri;
-
- if (yelp_cache_lookup_links (yelp_uri_to_string (uri)))
- return FALSE;
-
- if (node->prev)
- prev_node = node_last_ancestor (node->prev);
- else if (node->parent && node->parent->data)
- prev_node = node->parent;
- else
- prev_node = NULL;
-
- if (node->children)
- next_node = node->children;
- else if (node->next)
- next_node = node->next;
- else if (node->parent && node->parent->next)
- next_node = node->parent->next;
- else
- next_node = NULL;
-
- if (yelp_uri_get_section (uri) &&
- strcmp (yelp_uri_get_section (uri), "") &&
- strcmp (yelp_uri_get_section (uri), "toc") &&
- strcmp (yelp_uri_get_section (uri), "title-page"))
- up_node = g_node_nth_child (g_node_get_root (node), 1);
- else
- up_node = NULL;
-
- if (!prev_node) {
- links->prev_link_uri = "";
- links->prev_link_title = "";
- links->prev_link_text = "";
- } else {
- prev_uri = YELP_SECTION (prev_node->data)->uri;
- links->prev_link_uri = yelp_uri_to_string (prev_uri);
- links->prev_link_title = _("Previous");
- links->prev_link_text = YELP_SECTION (prev_node->data)->name;
- }
-
- if (!next_node) {
- links->next_link_uri = "";
- links->next_link_title = "";
- links->next_link_text = "";
- } else {
- next_uri = YELP_SECTION (next_node->data)->uri;
- links->next_link_uri = yelp_uri_to_string (next_uri);
- links->next_link_title = _("Next");
- links->next_link_text = YELP_SECTION (next_node->data)->name;
- }
-
- if (!up_node) {
- links->up_link_uri = "";
- links->up_link_title = "";
- } else {
- up_uri = YELP_SECTION (up_node->data)->uri;
- links->up_link_uri = yelp_uri_to_string (up_uri);
- links->up_link_title = YELP_SECTION (up_node->data)->name;
- }
-
- yelp_cache_add_links (yelp_uri_to_string (uri), links);
-
- return FALSE;
-}
-
-
static void
content_show_uri (YelpView *view, YelpURI *uri, GError **error)
{
@@ -541,13 +445,7 @@ content_show_uri (YelpView *view, YelpURI *uri, GError **error)
gtk_widget_show (priv->tree_sw);
content_set_tree (YELP_VIEW_CONTENT (view),
node);
-
- g_node_traverse (node,
- G_PRE_ORDER,
- G_TRAVERSE_ALL,
- -1,
- (GNodeTraverseFunc) content_generate_links,
- NULL);
+
} else {
if (gtk_widget_is_focus (priv->tree_sw)) {
reset_focus = TRUE;
diff --git a/stylesheets/ChangeLog b/stylesheets/ChangeLog
index 3d94e6c6..1446b768 100644
--- a/stylesheets/ChangeLog
+++ b/stylesheets/ChangeLog
@@ -1,3 +1,13 @@
+2003-10-12 Shaun McCance <shaunm@gnome.org>
+
+ * db2html*.xsl:
+ * yelp-customization.xsl:
+ - Uber-fast new stylesheets
+
+ * Makefile.am:
+ * docbook/Makefile.am:
+ - Use new stylesheets
+
2003-09-08 Shaun McCance <shaunm@gnome.org>
* yelp-customization.xsl:
diff --git a/stylesheets/Makefile.am b/stylesheets/Makefile.am
index b01acf3d..2d1dd43c 100644
--- a/stylesheets/Makefile.am
+++ b/stylesheets/Makefile.am
@@ -3,10 +3,40 @@ SUBDIRS = docbook
yelpcustomizationdir=$(datadir)/sgml/docbook/yelp
yelpcustomization_DATA = \
- yelp-customization.xsl \
- yelp-functions.xsl \
- yelp-custom.xsl \
- l10n.xml
+ db2html-admon.xsl \
+ db2html-biblio.xsl \
+ db2html-block.xsl \
+ db2html-callout.xsl \
+ db2html-chunk.xsl \
+ db2html-common.xsl \
+ db2html-division.xsl \
+ db2html-ebnf.xsl \
+ db2html-footnote.xsl \
+ db2html-formal.xsl \
+ db2html-glossary.xsl \
+ db2html-html.xsl \
+ db2html-index.xsl \
+ db2html-inline.xsl \
+ db2html-list.xsl \
+ db2html-lists.xsl \
+ db2html-math.xsl \
+ db2html-media.xsl \
+ db2html-navbar.xsl \
+ db2html-node.xsl \
+ db2html-param.xsl \
+ db2html-qanda.xsl \
+ db2html-refentry.xsl \
+ db2html-section.xsl \
+ db2html-suppressed.xsl \
+ db2html-synopsis.xsl \
+ db2html-table.xsl \
+ db2html-title.xsl \
+ db2html-titlepage.xsl \
+ db2html-tmp.xsl \
+ db2html-toc.xsl \
+ db2html-xref.xsl \
+ db2html.xsl \
+ gettext.xsl \
+ yelp-customization.xsl
EXTRA_DIST=$(yelpcustomization_DATA)
-
diff --git a/stylesheets/db2html-admon.xsl b/stylesheets/db2html-admon.xsl
new file mode 100644
index 00000000..f2b2b8b5
--- /dev/null
+++ b/stylesheets/db2html-admon.xsl
@@ -0,0 +1,40 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="caution | important | note | tip | warning">
+ <div class="admonition"><div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="$text_only">
+ <xsl:call-template name="node.heading"/>
+ <xsl:apply-templates select="*[name(.) != 'title']"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <table style="border: none;">
+ <tr>
+ <td rowspan="2" align="center" valign="top">
+ <img>
+ <xsl:attribute name="src">
+ <xsl:value-of select="$admon_graphics_path"/>
+ <xsl:value-of select="name(.)"/>
+ <xsl:value-of select="$admon_graphics_extension"/>
+ </xsl:attribute>
+ </img>
+ </td>
+ <th align="left" valign="top">
+ <xsl:call-template name="node.heading"/>
+ </th>
+ </tr>
+ <tr>
+ <td align="left" valign="top">
+ <xsl:apply-templates select="*[name(.) != 'title']"/>
+ </td>
+ </tr>
+ </table>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div></div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-biblio.xsl b/stylesheets/db2html-biblio.xsl
new file mode 100644
index 00000000..d2333990
--- /dev/null
+++ b/stylesheets/db2html-biblio.xsl
@@ -0,0 +1,46 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="bibliocoverage">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="bibliodiv">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="biblioentry">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="biblioid">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="bibliomisc">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="bibliomixed">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="bibliomset">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="bibliorelation">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="biblioset">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="bibliosource">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-block.xsl b/stylesheets/db2html-block.xsl
new file mode 100644
index 00000000..038d2ff2
--- /dev/null
+++ b/stylesheets/db2html-block.xsl
@@ -0,0 +1,305 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY is-division "
+(name(.) = 'appendix') or (name(.) = 'article') or
+(name(.) = 'book') or (name(.) = 'bibliography') or
+(name(.) = 'chapter') or (name(.) = 'colophon') or
+(name(.) = 'glossary') or (name(.) = 'index') or
+(name(.) = 'part') or (name(.) = 'preface') or
+(name(.) = 'reference') or (name(.) = 'refentry') or
+(name(.) = 'refsect1') or (name(.) = 'refsect2') or
+(name(.) = 'refsect3') or (name(.) = 'refsection') or
+(name(.) = 'sect1') or (name(.) = 'sect2') or
+(name(.) = 'sect3') or (name(.) = 'sect4') or
+(name(.) = 'sect5') or (name(.) = 'section') or
+(name(.) = 'set') or (name(.) = 'setindex') or
+(name(.) = 'simplesect') ">
+<!ENTITY is-info "
+(name(.) = 'appendixinfo') or (name(.) = 'articleinfo') or
+(name(.) = 'bibliographyinfo') or (name(.) = 'bookinfo') or
+(name(.) = 'chapterinfo') or (name(.) = 'glossaryinfo') or
+(name(.) = 'indexinfo') or (name(.) = 'partinfo') or
+(name(.) = 'prefaceinfo') or (name(.) = 'refentryinfo') or
+(name(.) = 'referenceinfo') or (name(.) = 'refsect1info') or
+(name(.) = 'refsect2info') or (name(.) = 'refsect3info') or
+(name(.) = 'refsectioninfo') or (name(.) = 'sect1info') or
+(name(.) = 'sect2info') or (name(.) = 'sect3info') or
+(name(.) = 'sect4info') or (name(.) = 'sect5info') or
+(name(.) = 'sectioninfo') or (name(.) = 'setinfo') or
+(name(.) = 'setindexinfo') ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template name="block">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template name="block.pre">
+ <pre class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </pre>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template match="abstract">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title or sidebarinfo/title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[name(.) != 'title']"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="authorblurb">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="blockquote | epigraph">
+ <div class="{name(.)}">
+ <xsl:if test="title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <blockquote>
+ <xsl:apply-templates
+ select="*[name(.) != 'title' and name(.) != 'attribution']"/>
+ </blockquote>
+ <xsl:if test="attribution">
+ <div class="attribution">
+ <xsl:apply-templates select="attribution"/>
+ </div>
+ </xsl:if>
+ </div>
+</xsl:template>
+
+<xsl:template match="caption">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="dedication">
+ <div class="{name(.)}">
+ <xsl:call-template name="node.heading"/>
+ <xsl:apply-templates select="*[
+ name(.) != 'title' and
+ name(.) != 'subtitle' and
+ name(.) != 'titleabbrev' ]"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="example">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <div class="heading">
+ <i>
+ <xsl:apply-templates select="." mode="node.header.header.mode"/>
+ </i>
+ <xsl:apply-templates select="title/node()"/>
+ </div>
+ <xsl:apply-templates select="*[
+ name(.) != 'blockinfo' and
+ name(.) != 'title' and
+ name(.) != 'titleabbrev' ]"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="figure">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <div class="heading">
+ <i>
+ <xsl:apply-templates select="." mode="node.header.header.mode"/>
+ </i>
+ <xsl:apply-templates select="title/node()"/>
+ </div>
+ <xsl:apply-templates select="*[
+ name(.) != 'blockinfo' and
+ name(.) != 'title' and
+ name(.) != 'titleabbrev' ]"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="formalpara">
+ <div class="{name(.)}">
+ <xsl:if test="title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[name(.) != 'title']"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="highlights">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="informalexample">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="informalfigure">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="informaltable">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="literallayout">
+ <xsl:call-template name="block.pre"/>
+</xsl:template>
+
+<xsl:template match="msg">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="msgaud | msglevel | msgorig">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="node.heading"/>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="msgentry">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="msgexplan">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="msginfo">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="para">
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="@role">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@role"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="partintro">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="programlisting">
+ <xsl:call-template name="block.pre"/>
+</xsl:template>
+
+<xsl:template match="screen">
+ <xsl:call-template name="block.pre"/>
+</xsl:template>
+
+<xsl:template match="sidebar">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title or sidebarinfo/title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[
+ (name(.) != 'sidebarinfo') and
+ (name(.) != 'title') and
+ (name(.) != 'titleabbrev') ]"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="simpara">
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </p>
+</xsl:template>
+
+<xsl:template match="simplemsgentry">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="subtitle">
+ <xsl:param name="depth" select="count(ancestor::*[&is-division;]) - 1"/>
+ <xsl:variable name="element">
+ <xsl:choose>
+ <xsl:when test="$depth &lt; 6">
+ <xsl:value-of select="concat('h', $depth + 2)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'h7'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="{$element}">
+ <xsl:attribute name="class" select="'subtitle'"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="synopsis">
+ <xsl:call-template name="block.pre"/>
+</xsl:template>
+
+<xsl:template match="table">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <div class="heading">
+ <i>
+ <xsl:apply-templates select="." mode="node.header.header.mode"/>
+ </i>
+ <xsl:apply-templates select="title/node()"/>
+ </div>
+ <xsl:apply-templates select="*[
+ name(.) != 'blockinfo' and
+ name(.) != 'title' and
+ name(.) != 'titleabbrev' ]"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="title">
+ <xsl:param name="depth" select="count(ancestor::*[&is-division;]) - 1"/>
+ <xsl:variable name="element">
+ <xsl:choose>
+ <xsl:when test="$depth &lt; 7">
+ <xsl:value-of select="concat('h', $depth + 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'h7'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="parent" select="(parent::*[&is-info;]/.. | parent::*)[1]"/>
+ <xsl:element name="{$element}">
+ <xsl:attribute name="class">
+ <xsl:value-of select="name($parent)"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="$parent" mode="node.header.header.mode"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-callout.xsl b/stylesheets/db2html-callout.xsl
new file mode 100644
index 00000000..809876b2
--- /dev/null
+++ b/stylesheets/db2html-callout.xsl
@@ -0,0 +1,38 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="programlistingco | screenco">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="area">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="areaset">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="areaspec">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="callout">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="calloutlist">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="co">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="coref">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-chunk.xsl b/stylesheets/db2html-chunk.xsl
new file mode 100644
index 00000000..deb5cdb5
--- /dev/null
+++ b/stylesheets/db2html-chunk.xsl
@@ -0,0 +1,305 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY is-division "
+ (name(.) = 'appendix') or (name(.) = 'article') or
+ (name(.) = 'book') or (name(.) = 'bibliography') or
+ (name(.) = 'chapter') or (name(.) = 'colophon') or
+ (name(.) = 'glossary') or (name(.) = 'index') or
+ (name(.) = 'part') or (name(.) = 'preface') or
+ (name(.) = 'reference') or (name(.) = 'refentry') or
+ (name(.) = 'refsect1') or (name(.) = 'refsect2') or
+ (name(.) = 'refsect3') or (name(.) = 'refsection') or
+ (name(.) = 'sect1') or (name(.) = 'sect2') or
+ (name(.) = 'sect3') or (name(.) = 'sect4') or
+ (name(.) = 'sect5') or (name(.) = 'section') or
+ (name(.) = 'set') or (name(.) = 'setindex') or
+ (name(.) = 'simplesect') ">
+<!ENTITY is-info "
+ (name(.) = 'appendixinfo') or (name(.) = 'articleinfo') or
+ (name(.) = 'bibliographyinfo') or (name(.) = 'bookinfo') or
+ (name(.) = 'chapterinfo') or (name(.) = 'glossaryinfo') or
+ (name(.) = 'indexinfo') or (name(.) = 'partinfo') or
+ (name(.) = 'prefaceinfo') or (name(.) = 'refentryinfo') or
+ (name(.) = 'referenceinfo') or (name(.) = 'refsect1info') or
+ (name(.) = 'refsect2info') or (name(.) = 'refsect3info') or
+ (name(.) = 'refsectioninfo') or (name(.) = 'sect1info') or
+ (name(.) = 'sect2info') or (name(.) = 'sect3info') or
+ (name(.) = 'sect4info') or (name(.) = 'sect5info') or
+ (name(.) = 'sectioninfo') or (name(.) = 'setinfo') or
+ (name(.) = 'setindexinfo') ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ extension-element-prefixes="exsl"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template name="chunk">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="info" select="false()"/>
+ <xsl:param name="divisions" select="false()"/>
+ <xsl:param name="id" select="$node/@id"/>
+
+ <exsl:document href="{concat($id, $html_extension)}">
+ <xsl:call-template name="html">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="leaf" select="
+ count($node/ancestor::*[&is-division;]) &gt;= $chunk_depth"/>
+ </xsl:call-template>
+ </exsl:document>
+
+ <xsl:if test="$generate_titlepage and $info and ($node = /*)">
+ <xsl:apply-templates select="$info" mode="chunk.mode"/>
+ </xsl:if>
+
+ <xsl:if test="count($node/ancestor::*[&is-division;]) &lt; $chunk_depth">
+ <xsl:apply-templates select="$divisions" mode="chunk.mode"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template mode="chunk.mode" match="
+ appendixinfo | articleinfo | bibliographyinfo | bookinfo |
+ chapterinfo | glossaryinfo | indexinfo | partinfo |
+ prefaceinfo | refentryinfo | referenceinfo | refsect1info |
+ refsect2info | refsect3info | refsectioninfo | sect1info |
+ sect2info | sect3info | sect4info | sect5info |
+ sectioninfo | setinfo | setindexinfo ">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="id" select="'titlepage'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="appendix">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="appendixinfo"/>
+ <xsl:with-param name="divisions" select="
+ refentry | sect1 | section | simplesect "/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="article">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="articleinfo"/>
+ <xsl:with-param name="divisions" select="
+ refentry | sect1 | section | simplesect "/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="book">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="bookinfo"/>
+ <xsl:with-param name="divisions" select="
+ appendix | article | bibliography | chapter | colophon | glossary |
+ index | part | preface | reference | setindex "/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="bibliography">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="bibliographyinfo"/>
+ <xsl:with-param name="divisions" select="false()"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="chapter">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="chapterinfo"/>
+ <xsl:with-param name="divisions" select="
+ refentry | sect1 | section | simplesect "/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="colophon">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="false()"/>
+ <xsl:with-param name="divisions" select="false()"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="glossary">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="glossaryinfo"/>
+ <xsl:with-param name="divisions" select="false()"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="index">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="indexinfo"/>
+ <xsl:with-param name="divisions" select="false()"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="part">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="partinfo"/>
+ <xsl:with-param name="divisions" select="
+ appendix | article | bibliography | chapter | glossary |
+ index | preface | refentry | reference "/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="preface">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="prefaceinfo"/>
+ <xsl:with-param name="divisions" select="
+ refentry | sect1 | section | simplesect "/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="reference">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="referenceinfo"/>
+ <xsl:with-param name="divisions" select="refentry"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="refentry">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="refentryinfo"/>
+ <xsl:with-param name="divisions" select="refsect1 | refsection"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="refsect1">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="refsect1info"/>
+ <xsl:with-param name="divisions" select="refsect2"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="refsect2">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="refsect2info"/>
+ <xsl:with-param name="divisions" select="refsect3"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="refsect3">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="refsect3info"/>
+ <xsl:with-param name="divisions" select="false()"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="refsection">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="refsectioninfo"/>
+ <xsl:with-param name="divisions" select="refsection"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="sect1">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="sect1info"/>
+ <xsl:with-param name="divisions" select="refentry | sect2 | simplesect"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="sect2">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="sect2info"/>
+ <xsl:with-param name="divisions" select="refentry | sect3 | simplesect"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="sect3">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="sect3info"/>
+ <xsl:with-param name="divisions" select="refentry | sect4 | simplesect"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="sect4">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="sect4info"/>
+ <xsl:with-param name="divisions" select="refentry | sect5 | simplesect"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="sect5">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="sect5info"/>
+ <xsl:with-param name="divisions" select="refentry | simplesect"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="section">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="sectioninfo"/>
+ <xsl:with-param name="divisions" select="refentry | section | simplesect"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="set">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="setinfo"/>
+ <xsl:with-param name="divisions" select="book | setindex"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="setindex">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="setindexinfo"/>
+ <xsl:with-param name="divisions" select="false()"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="chunk.mode" match="simplesect">
+ <xsl:call-template name="chunk">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="info" select="false()"/>
+ <xsl:with-param name="divisions" select="false()"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template mode="chunk.id.mode" match="*">
+ <xsl:choose>
+ <xsl:when test="self::preface[@role = 'bookintro']">
+ <xsl:apply-templates select=".." mode="chunk.id.mode"/>
+ </xsl:when>
+ <xsl:when test="
+ (&is-division;) and
+ (count(ancestor::*[&is-division;]) &lt;= $chunk_depth)">
+ <xsl:value-of select="@id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select=".." mode="chunk.id.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-common.xsl b/stylesheets/db2html-common.xsl
new file mode 100644
index 00000000..e96fb745
--- /dev/null
+++ b/stylesheets/db2html-common.xsl
@@ -0,0 +1,92 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template name="person.name">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="$node/personname">
+ <xsl:call-template name="person.name">
+ <xsl:with-param name="node" select="$node/personname"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name($node)='corpauthor'">
+ <xsl:apply-templates select="$node"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$node/honorific">
+ <xsl:value-of select="$node/honorific[1]"/>
+ <xsl:text>.</xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$node/@role = 'family-given'">
+ <xsl:if test="$node/surname">
+ <xsl:if test="$node/honorific">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$node/surname[1]"/>
+ </xsl:if>
+ <xsl:if test="$node/othername">
+ <xsl:if test="$node/honorific or $node/surname">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$node/othername[1]"/>
+ </xsl:if>
+ <xsl:if test="$node/firstname">
+ <xsl:if test="$node/honorific or $node/surname or $node/othername">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$node/firstname[1]"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$node/firstname">
+ <xsl:if test="$node/honorific">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$node/firstname[1]"/>
+ </xsl:if>
+ <xsl:if test="$node/othername">
+ <xsl:if test="$node/honorific or $node/firstname">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$node/othername[1]"/>
+ </xsl:if>
+ <xsl:if test="$node/surname">
+ <xsl:if test="$node/honorific or $node/firstname or $node/othername">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="$node/surname[1]"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$node/lineage">
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="$node/lineage"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="copy-string">
+ <xsl:param name="string"/>
+ <xsl:param name="count" select="0"/>
+ <xsl:param name="result"/>
+ <xsl:choose>
+ <xsl:when test="$count &gt; 0">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="$string"/>
+ <xsl:with-param name="count" select="$count - 1"/>
+ <xsl:with-param name="result">
+ <xsl:value-of select="$result"/>
+ <xsl:value-of select="$string"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$result"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-division.xsl b/stylesheets/db2html-division.xsl
new file mode 100644
index 00000000..44fd6de3
--- /dev/null
+++ b/stylesheets/db2html-division.xsl
@@ -0,0 +1,288 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY divcomponent "
+abstract | address | anchor | authorblurb |
+beginpage | blockquote | bridgehead | calloutlist |
+caution | classsynopsis | cmdsynopsis | constraintdef |
+constructorsynopsis | desctructorsynopsis | epigraph | equation |
+example | fieldsynopsis | figure | formalpara |
+funcsynopsis | glosslist | graphic | graphicco |
+highlights | important | indexterm | informalequation |
+informalexample | informalfigure | informaltable | itemizedlist |
+literallayout | mediaobject | mediaobjectco | methodsynopsis |
+msgset | note | orderedlist | para |
+procedure | productionset | programlisting | programlistingco |
+qandaset | remark | screen | screenco |
+screenshot | segmentedlist | sidebar | simpara |
+simplelist | synopsis | table | tip |
+variablelist | warning ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template match="
+ appendix | article | book | bibliography | chapter |
+ colophon | glossary | index | part | preface |
+ reference | refsect1 | refsect2 | refsect3 | refsection |
+ sect1 | sect2 | sect3 | sect4 | sect5 |
+ section | set | setindex | simplesect ">
+ <xsl:param name="depth" select="0"/>
+ <xsl:param name="leaf" select="true()"/>
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="." mode="content.mode">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ <xsl:choose>
+ <xsl:when test="$leaf">
+ <xsl:apply-templates select="." mode="division.mode">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="toc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:param name="depth" select="0"/>
+ <xsl:param name="leaf" select="true()"/>
+ <xsl:if test="preceding-sibling::refentry and $depth &gt; 0">
+ <hr class="refentry.seperator"/>
+ </xsl:if>
+ <div class="{name(.)}">
+ <xsl:apply-templates select="." mode="content.mode">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ <xsl:choose>
+ <xsl:when test="$leaf">
+ <xsl:apply-templates select="." mode="division.mode">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="toc"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template mode="content.mode" match="
+ appendix | article | chapter | colophon | preface | refsect1 |
+ refsect2 | refsect3 | refsection | sect1 | sect2 | sect3 |
+ sect4 | sect5 | section | simplesect ">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="title | subtitle">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="&divcomponent;"/>
+</xsl:template>
+
+<xsl:template mode="content.mode" match="book">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="title | subtitle">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="dedication"/>
+ <xsl:apply-templates select="preface[@role = 'bookintro']"/>
+</xsl:template>
+
+<xsl:template mode="content.mode" match="bibliography">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="title | subtitle">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="
+ &divcomponent; | bibliodiv | biblioentry | bibliomixed"/>
+</xsl:template>
+
+<xsl:template mode="content.mode" match="glossary">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="title | subtitle">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="&divcomponent; | glossdiv | glossentry"/>
+</xsl:template>
+
+<xsl:template mode="content.mode" match="index | setindex">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="title | subtitle">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="
+ &divcomponent; | indexdiv | indexentry"/>
+</xsl:template>
+
+<xsl:template mode="content.mode" match="part | reference">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="title | subtitle">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="partintro"/>
+</xsl:template>
+
+<xsl:template mode="content.mode" match="refentry">
+ <xsl:param name="depth" select="0"/>
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:apply-templates select="refmeta/refentrytitle">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="refentryinfo/title">
+ <xsl:apply-templates select="refentryinfo/title">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:apply-templates
+ select="*[name(.) != 'refsect1' and name(.) != 'refsection']"/>
+</xsl:template>
+
+<xsl:template mode="content.mode" match="set">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="title | subtitle">
+ <xsl:with-param name="depth" select="$depth"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template mode="division.mode" match="
+ appendix | article | chapter | preface">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refentry | sect1 | section | simplesect">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="book">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="
+ appendix | article | bibliography | chapter | colophon |
+ glossary | index | part | reference | setindex |
+ preface[@role != 'bookintro'] ">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="bibliography"/>
+<xsl:template mode="division.mode" match="colophon"/>
+
+<xsl:template mode="division.mode" match="glossary">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="bibliography">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="index"/>
+
+<xsl:template mode="division.mode" match="part">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="
+ appendix | article | bibliography | chapter | glossary |
+ index | preface | refentry | reference ">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="refentry">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refsect1 | refsection">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="reference">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refentry">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="refsect1">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refsect2">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="refsect2">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refsect3">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="refsect3"/>
+
+<xsl:template mode="division.mode" match="refsection">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refsection">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="sect1">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refentry | sect2 | simplesect">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="sect2">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refentry | sect3 | simplesect">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="sect3">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refentry | sect4 | simplesect">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="sect4">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refentry | sect5 | simplesect">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="sect5">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refentry | simplesect">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="section">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="refentry | section | simplesect">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="set">
+ <xsl:param name="depth" select="0"/>
+ <xsl:apply-templates select="book | setindex">
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template mode="division.mode" match="setindex"/>
+<xsl:template mode="division.mode" match="simplesect"/>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-ebnf.xsl b/stylesheets/db2html-ebnf.xsl
new file mode 100644
index 00000000..6af012cb
--- /dev/null
+++ b/stylesheets/db2html-ebnf.xsl
@@ -0,0 +1,38 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="constraint">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="constraintdef">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="lhs">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="nonterminal">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="production">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="productionrecap">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="productionset">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="rhs">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-footnote.xsl b/stylesheets/db2html-footnote.xsl
new file mode 100644
index 00000000..c5514a83
--- /dev/null
+++ b/stylesheets/db2html-footnote.xsl
@@ -0,0 +1,14 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="footnote">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="footnoteref">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-formal.xsl b/stylesheets/db2html-formal.xsl
new file mode 100644
index 00000000..70749bbc
--- /dev/null
+++ b/stylesheets/db2html-formal.xsl
@@ -0,0 +1,13 @@
+<?xml version='1.0'?><!-- -*- Mode: xml -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template name="formal.object">
+ <div class="{name(.)}">
+ <xsl:call-template name="formal.object.heading"/>
+ <xsl:apply-templates mode="content.mode"/>
+ </div>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-glossary.xsl b/stylesheets/db2html-glossary.xsl
new file mode 100644
index 00000000..807e9344
--- /dev/null
+++ b/stylesheets/db2html-glossary.xsl
@@ -0,0 +1,95 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="glossdef">
+ <dd>
+ <xsl:apply-templates select="*[name(.) != 'glossseealso']"/>
+ <xsl:if test="glossseealso">
+ <p>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'See Also'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:for-each select="glossseealso">
+ <xsl:apply-templates select="."/>
+ <xsl:choose>
+ <xsl:when test="position() = last()">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </p>
+ </xsl:if>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossdiv">
+ <div class="{name(.)}">
+ <xsl:apply-templates select="(glossentry[1]/preceding-sibling::*)"/>
+ <dl>
+ <xsl:apply-templates select="glossentry"/>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="glossentry">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="glosslist">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <dl>
+ <xsl:apply-templates/>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="glosssee">
+ <dd>
+ <p>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'See'"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="@otherterm">
+ <a href="#{@otherterm}">
+ <xsl:call-template name="xref.content">
+ <xsl:with-param name="linkend" select="@otherterm"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </p>
+ </dd>
+</xsl:template>
+
+<xsl:template match="glossseealso">
+ <xsl:choose>
+ <xsl:when test="@otherterm">
+ <a href="#{@otherterm}">
+ <xsl:call-template name="xref.content">
+ <xsl:with-param name="linkend" select="@otherterm"/>
+ </xsl:call-template>
+ </a>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossterm">
+ <dt>
+ <xsl:apply-templates/>
+ </dt>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-html.xsl b/stylesheets/db2html-html.xsl
new file mode 100644
index 00000000..dae6f365
--- /dev/null
+++ b/stylesheets/db2html-html.xsl
@@ -0,0 +1,203 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template name="html">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="leaf" select="true()"/>
+
+ <html>
+ <head>
+ <title>
+ <xsl:apply-templates select="$node" mode="title.text.mode"/>
+ </title>
+ <style type="text/css">
+ <xsl:call-template name="html.css">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </style>
+ <xsl:call-template name="html.head">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="html.body.attributes">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ <xsl:call-template name="html.body.top">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ <xsl:call-template name="html.navbar.top">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+
+ <xsl:apply-templates select="$node">
+ <xsl:with-param name="depth" select="0"/>
+ <xsl:with-param name="leaf" select="$leaf"/>
+ </xsl:apply-templates>
+
+ <xsl:call-template name="html.navbar.bottom">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ <xsl:call-template name="html.body.bottom">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template name="html.css"><xsl:text>
+body {
+ margin-right: 1em;
+}
+
+h1 {
+ font-size: 1.6em;
+ font-weight: bold;
+ margin-bottom: 0em;
+ padding-bottom: 0em;
+}
+h1 + * {
+ margin-top: 0.2em;
+ padding-top: 0em;
+}
+h2 {
+ font-size: 1.4em;
+ font-weight: bold;
+ margin-top: 1.2em;
+ margin-bottom: 0em;
+ padding-bottom: 0em;
+}
+h2 + * {
+ margin-top: 0.2em;
+ padding-top: 0em;
+}
+h3 {
+ font-size: 1.2em;
+ font-weight: bold;
+ margin-bottom: 0em;
+ padding-bottom: 0em;
+}
+h3 + * {
+ margin-top: 0.2em;
+ padding-top: 0em;
+}
+h4 {
+ margin-bottom: 0em;
+ padding-bottom: 0em;
+}
+h4 + * {
+ margin-top: 0.2em;
+ padding-top: 0em;
+}
+
+div[class="heading"] {
+ margin-bottom: 0.5em;
+}
+
+div[class="admonition"] {
+ border-top: outset 1px;
+ border-bottom: outset 1px;
+ margin-left: 2em;
+ margin-right: 2em;
+ margin-bottom: 1em;
+}
+
+div[class="informalexample"] {
+ margin-left: 2em;
+ margin-right: 1em;
+ margin-bottom: 1em;
+}
+div[class="informalfigure"] {
+ margin-left: 2em;
+ margin-right: 1em;
+ margin-bottom: 1em;
+}
+div[class="informaltable"] {
+ margin-left: 2em;
+ margin-right: 1em;
+ margin-bottom: 1em;
+}
+div[class="example"] {
+ margin-left: 2em;
+ margin-right: 1em;
+ margin-bottom: 1em;
+}
+div[class="figure"] {
+ margin-left: 2em;
+ margin-right: 1em;
+ margin-bottom: 1em;
+}
+div[class="table"] {
+ margin-left: 2em;
+ margin-right: 1em;
+ margin-bottom: 1em;
+}
+
+div[class="sidebar"] {
+ border: outset 1px;
+ margin-left: 2em;
+ margin-right: 2em;
+}
+
+ul {
+ list-style-image: url("li.png")
+}
+
+<!--
+table {
+ border: outset 1px;
+}
+-->
+thead th {
+ border-bottom: solid 1px;
+}
+tfoot th {
+ border-top: solid 1px;
+}
+tr[class="even"] {
+ background-color: #EEEEEE;
+}
+tr &gt; * {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+}
+td {
+ vertical-align: top;
+}
+th {
+ vertical-align: bottom;
+}
+
+div[class="attribution"] {
+ text-align: right;
+}
+</xsl:text></xsl:template>
+
+<xsl:template name="html.head">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="html.body.attributes">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="html.body.top">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="html.body.bottom">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+<xsl:template name="html.navbar.top">
+ <xsl:param name="node" select="."/>
+<p><i><xsl:apply-templates select="$node" mode="navbar.prev.link.mode"/></i></p>
+<p><i><xsl:apply-templates select="$node" mode="navbar.next.link.mode"/></i></p>
+</xsl:template>
+
+<xsl:template name="html.navbar.bottom">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-index.xsl b/stylesheets/db2html-index.xsl
new file mode 100644
index 00000000..e3a9d423
--- /dev/null
+++ b/stylesheets/db2html-index.xsl
@@ -0,0 +1,46 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="indexdiv">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="indexentry">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="indexterm">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="primaryie">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="secondaryie">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="see">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="seealso">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="seealsoie">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="seeie">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="tertiaryie">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-inline.xsl b/stylesheets/db2html-inline.xsl
new file mode 100644
index 00000000..8408eafa
--- /dev/null
+++ b/stylesheets/db2html-inline.xsl
@@ -0,0 +1,653 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template name="inline">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.bold">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <b><xsl:apply-templates/></b>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.bold.italic">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <b><i><xsl:apply-templates/></i></b>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.bold.mono">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <b><tt><xsl:apply-templates/></tt></b>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.italic">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <i><xsl:apply-templates/></i>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.italic.mono">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <i><tt><xsl:apply-templates/></tt></i>
+ </span>
+</xsl:template>
+
+<xsl:template name="inline.mono">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <tt><xsl:apply-templates/></tt>
+ </span>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template match="abbrev">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="accel">
+ <u><xsl:call-template name="inline"/></u>
+</xsl:template>
+
+<xsl:template match="acronym">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="action">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="address">
+ <span class="{name(.)}" style="white-space: pre;">
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<xsl:template match="application">
+ <xsl:call-template name="inline.italic"/>
+</xsl:template>
+
+<xsl:template match="attribution">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="author">
+ <span class="{name(.)}"><xsl:call-template name="person.name"/></span>
+</xsl:template>
+
+<xsl:template match="authorinitials">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="city">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="citation">
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline"/>
+ <xsl:text>]</xsl:text>
+</xsl:template>
+
+<xsl:template match="citerefentry">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat('man:', refentrytitle)"/>
+ </xsl:attribute>
+ <xsl:apply-templates select="refentrytitle/node()"/>
+ <xsl:if test="manvolnum">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates select="manvolnum/node()"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </a>
+</xsl:template>
+
+<xsl:template match="citetitle">
+ <xsl:choose>
+ <xsl:when test="@pubwork = 'article'">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'&#8220;'"/>
+ </xsl:call-template>
+ <xsl:call-template name="inline"/>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'&#8221;'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italic"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="classname">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="command">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="computeroutput">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="constant">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="corpauthor">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="country">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="database">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="date">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="editor">
+ <span class="{name(.)}"><xsl:call-template name="person.name"/></span>
+</xsl:template>
+
+<xsl:template match="email">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <tt>
+ <xsl:text>&lt;</xsl:text>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:text>mailto:</xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </a>
+ <xsl:text>&gt;</xsl:text>
+ </tt>
+ </span>
+</xsl:template>
+
+<xsl:template match="emphasis">
+ <xsl:choose>
+ <xsl:when test="(@role = 'bold') or (@role = 'strong')">
+ <xsl:call-template name="inline.bold"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.italic"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="envar">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="errorcode">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="errorname">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="errortext">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="errortype">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="exceptionname">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="fax">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="filename">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="firstterm">
+ <xsl:call-template name="inline.italic"/>
+</xsl:template>
+
+<xsl:template match="foreignphrase">
+ <xsl:call-template name="inline.italic"/>
+</xsl:template>
+
+<xsl:template match="function">
+ <xsl:choose>
+ <xsl:when test="function or parameter or replaceable">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <tt><xsl:apply-templates select="(* | text())[1]"/></tt>
+ <xsl:for-each select="(* | text())[position() != 1]">
+ <xsl:apply-templates select="."/>
+ <xsl:if test="
+ (self::parameter or self::replaceable) and
+ (following-sibling::*)">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="inline.mono"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="guibutton">
+ <xsl:call-template name="inline.bold"/>
+</xsl:template>
+
+<xsl:template match="guiicon">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="guilabel">
+ <xsl:call-template name="inline.bold"/>
+</xsl:template>
+
+<xsl:template match="guimenu">
+ <xsl:call-template name="inline.bold"/>
+</xsl:template>
+
+<xsl:template match="guimenuitem">
+ <xsl:call-template name="inline.bold"/>
+</xsl:template>
+
+<xsl:template match="guisubmenu">
+ <xsl:call-template name="inline.bold"/>
+</xsl:template>
+
+<xsl:template match="hardware">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="interfacename">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="jobtitle">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="keycap">
+ <xsl:call-template name="inline.bold"/>
+</xsl:template>
+
+<xsl:template match="keycode">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="keycombo">
+ <xsl:variable name="joinchar">
+ <xsl:choose>
+ <xsl:when test="@action = 'seq'"><xsl:text> </xsl:text></xsl:when>
+ <xsl:when test="@action = 'simul'">+</xsl:when>
+ <xsl:when test="@action = 'press'">-</xsl:when>
+ <xsl:when test="@action = 'click'">-</xsl:when>
+ <xsl:when test="@action = 'double-click'">-</xsl:when>
+ <xsl:when test="@action = 'other'"></xsl:when>
+ <xsl:otherwise>+</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="*">
+ <xsl:if test="position()>1"><xsl:value-of select="$joinchar"/></xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="keysym">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="lineannotation">
+ <xsl:call-template name="inline.italic"/>
+</xsl:template>
+
+<xsl:template match="literal">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="markup">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="medialabel">
+ <xsl:call-template name="inline.italic"/>
+</xsl:template>
+
+<xsl:template match="menuchoice">
+ <span class="{name(.)}">
+ <xsl:for-each select="*[name(.) != 'shortcut']">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>&#10132;</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+ <xsl:if test="shortcut">
+ <xsl:text> (</xsl:text>
+ <xsl:apply-templates select="shortcut"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </span>
+</xsl:template>
+
+<xsl:template match="methodname">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="mousebutton">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="msgmain">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgrel">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgrel/title">
+ <b><xsl:apply-templates/></b>
+</xsl:template>
+
+<xsl:template match="msgset">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgsub">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="msgtext">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="option">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="optional">
+ <xsl:text>[</xsl:text>
+ <xsl:call-template name="inline"/>
+ <xsl:text>]</xsl:text>
+</xsl:template>
+
+<xsl:template match="orgdiv">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="orgname">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="otheraddr">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="othercredit">
+ <span class="{name(.)}"><xsl:call-template name="person.name"/></span>
+</xsl:template>
+
+<xsl:template match="parameter">
+ <xsl:call-template name="inline.italic.mono"/>
+</xsl:template>
+
+<xsl:template match="personname">
+ <xsl:call-template name="person.name"/>
+</xsl:template>
+
+<xsl:template match="phone">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="phrase">
+ <span>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="@role">
+ <xsl:attribute name="class">
+ <xsl:value-of select="@role"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </span>
+</xsl:template>
+
+<xsl:template match="pob">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="postcode">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="productname">
+ <xsl:call-template name="inline"/>
+ <xsl:if test="@class">
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="@class"/>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="productnumber">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="prompt">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="property">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="quote">
+ <xsl:choose>
+ <xsl:when test="(count(ancestor::quote) mod 2) = 0">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'&#8220;'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'&#8221;'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'&#8216;'"/>
+ </xsl:call-template>
+ <xsl:apply-templates/>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'&#8217;'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="replaceable">
+ <xsl:call-template name="inline.italic"/>
+</xsl:template>
+
+<xsl:template match="returnvalue">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="sgmltag">
+ <xsl:variable name="class">
+ <xsl:choose>
+ <xsl:when test="@class">
+ <xsl:value-of select="@class"/>
+ </xsl:when>
+ <xsl:otherwise>element</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <tt class="sgmltag-{$class}">
+ <xsl:choose>
+ <xsl:when test="$class = 'attribute'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class = 'attvalue'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class = 'element'">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:when test="$class = 'emptytag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>/&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class = 'endtag'">
+ <xsl:text>&lt;/</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class = 'genentity'">
+ <xsl:text>&amp;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class = 'numcharref'">
+ <xsl:text>&amp;#</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class = 'paramentity'">
+ <xsl:text>%</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class = 'pi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class = 'sgmlcomment'">
+ <xsl:text>&lt;!--</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>--&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class = 'starttag'">
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ <xsl:when test="$class = 'xmlpi'">
+ <xsl:text>&lt;?</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>?&gt;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </tt>
+</xsl:template>
+
+<xsl:template match="shortcut">
+ <xsl:call-template name="inline.bold"/>
+</xsl:template>
+
+<xsl:template match="state">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="street">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="structfield">
+ <xsl:call-template name="inline.italic.mono"/>
+</xsl:template>
+
+<xsl:template match="structname">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="subscript">
+ <sub>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </sub>
+</xsl:template>
+
+<xsl:template match="superscript">
+ <sup>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </sup>
+</xsl:template>
+
+<xsl:template match="symbol">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="systemitem">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="token">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="trademark">
+ <xsl:variable name="class">
+ <xsl:choose>
+ <xsl:when test="@class">
+ <xsl:value-of select="@class"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'trade'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat" select="$class"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="type">
+ <xsl:call-template name="inline"/>
+</xsl:template>
+
+<xsl:template match="userinput">
+ <xsl:call-template name="inline.bold.mono"/>
+</xsl:template>
+
+<xsl:template match="varname">
+ <xsl:call-template name="inline.mono"/>
+</xsl:template>
+
+<xsl:template match="wordasword">
+ <xsl:call-template name="inline.italic"/>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-list.xsl b/stylesheets/db2html-list.xsl
new file mode 100644
index 00000000..f6208e23
--- /dev/null
+++ b/stylesheets/db2html-list.xsl
@@ -0,0 +1,283 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY listcomponent "
+abstract | address | anchor | authorblurb |
+beginpage | blockquote | bridgehead | caution |
+classsynopsis | cmdsynopsis | constructorsynopsis | desctructorsynopsis |
+epigraph | fieldsynopsis | formalpara | funcsynopsis |
+graphic | graphicco | highlights | important |
+indexterm | informalequation | informalexample | informalfigure |
+informaltable | literallayout | mediaobject | mediaobjectco |
+methodsynopsis | note | para | programlisting |
+programlistingco | remark | screen | screenco |
+screenshot | simpara | synopsis | tip |
+warning ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- == itemizedlist ======================================================= -->
+
+<xsl:template match="itemizedlist">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="&listcomponent;"/>
+ <ul>
+ <xsl:if test="@mark">
+ <xsl:attribute name="style">
+ <xsl:text>list-style-type: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@mark = 'bullet'">disc</xsl:when>
+ <xsl:when test="@mark = 'box'">square</xsl:when>
+ <xsl:otherwise><xsl:value-of select="@mark"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@spacing = 'compact'">
+ <xsl:attribute name="compact">
+ <xsl:value-of select="@spacing"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="listitem"/>
+ </ul>
+ </div>
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+ <li>
+ <xsl:if test="@override">
+ <xsl:attribute name="style">
+ <xsl:text>list-style-type: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@override = 'bullet'">disc</xsl:when>
+ <xsl:when test="@override = 'box'">square</xsl:when>
+ <xsl:otherwise><xsl:value-of select="@override"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </li>
+</xsl:template>
+
+<!-- == orderedlist ======================================================== -->
+
+<xsl:template name="orderedlist.start">
+ <xsl:param name="list" select="."/>
+ <xsl:choose>
+ <xsl:when test="$list/@continutation != 'continues'">1</xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="prevlist"
+ select="$list/preceding::orderedlist[1]"/>
+ <xsl:choose>
+ <xsl:when test="count($prevlist) = 0">1</xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="prevlength" select="count($prevlist/listitem)"/>
+ <xsl:variable name="prevstart">
+ <xsl:call-template name="orderedlist.start">
+ <xsl:with-param name="list" select="$prevlist"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prevstart + $prevlength"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="orderedlist">
+ <xsl:variable name="start">
+ <xsl:choose>
+ <xsl:when test="@continuation = 'continues'">
+ <xsl:call-template name="orderedlist.start"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="&listcomponent;"/>
+ <ol>
+ <xsl:if test="@numeration">
+ <xsl:attribute name="type">
+ <xsl:choose>
+ <xsl:when test="@numeration = 'arabic'">1</xsl:when>
+ <xsl:when test="@numeration = 'loweralpha'">a</xsl:when>
+ <xsl:when test="@numeration = 'lowerroman'">i</xsl:when>
+ <xsl:when test="@numeration = 'upperalpha'">A</xsl:when>
+ <xsl:when test="@numeration = 'upperroman'">I</xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$start != '1'">
+ <xsl:attribute name="start">
+ <xsl:value-of select="$start"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@spacing = 'compact'">
+ <xsl:attribute name="compact">
+ <xsl:value-of select="@spacing"/>
+ </xsl:attribute>
+ </xsl:if>
+ <!-- FIXME: inheritnum -->
+ <xsl:apply-templates select="listitem"/>
+ </ol>
+ </div>
+</xsl:template>
+
+<xsl:template match="orderedlist/listitem">
+ <li>
+ <xsl:if test="@override">
+ <xsl:attribute name="value">
+ <xsl:value-of select="@override"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </li>
+</xsl:template>
+
+<!-- == procedure ========================================================== -->
+
+<xsl:template match="procedure">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[
+ (name(.) != 'blockinfo') and (name(.) != 'title') and
+ (name(.) != 'titleabbrev') and (name(.) != 'step') ]"/>
+ <xsl:choose>
+ <xsl:when test="count(step) = 1">
+ <ul>
+ <xsl:apply-templates select="step"/>
+ </ul>
+ </xsl:when>
+ <xsl:otherwise>
+ <ol>
+ <xsl:apply-templates select="step"/>
+ </ol>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<xsl:template match="step">
+ <li>
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[name(.) != 'title']"/>
+ </li>
+</xsl:template>
+
+<xsl:template match="substeps">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <ol>
+ <xsl:apply-templates/>
+ </ol>
+ </div>
+</xsl:template>
+
+<!-- == segmentedlist ====================================================== -->
+
+<xsl:template match="segmentedlist">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <ul style="list-style-type: none;">
+ <xsl:apply-templates select="seglistitem"/>
+ </ul>
+ </div>
+</xsl:template>
+
+<xsl:template match="seglistitem">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="segtitle">
+ <b>
+ <xsl:apply-templates/>
+ <xsl:text>: </xsl:text>
+ </b>
+</xsl:template>
+
+<xsl:template match="seg">
+ <xsl:variable name="position" select="count(preceding-sibling::seg) + 1"/>
+ <p>
+ <li>
+ <xsl:if test="$position = 1">
+ <xsl:attribute name="class">
+ <xsl:text>segfirst</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates
+ select="../../segtitle[position() = $position]"/>
+ <xsl:apply-templates/>
+ </li>
+ </p>
+</xsl:template>
+
+<!-- == simplelist ========================================================= -->
+
+<xsl:template match="simplelist">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="member">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<!-- == variablelist ======================================================= -->
+
+<xsl:template match="variablelist">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="&listcomponent;"/>
+ <dl>
+ <xsl:apply-templates select="varlistentry"/>
+ </dl>
+ </div>
+</xsl:template>
+
+<xsl:template match="varlistentry">
+ <dt>
+ <xsl:call-template name="anchor"/>
+ <xsl:for-each select="term">
+ <xsl:if test="position() != 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+ </dt>
+ <xsl:apply-templates select="listitem"/>
+</xsl:template>
+
+<xsl:template match="varlistentry/listitem">
+ <dd>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </dd>
+</xsl:template>
+
+<xsl:template match="term">
+ <xsl:call-template name="inline.bold"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-lists.xsl b/stylesheets/db2html-lists.xsl
new file mode 100644
index 00000000..2c13e8d3
--- /dev/null
+++ b/stylesheets/db2html-lists.xsl
@@ -0,0 +1,85 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY listcomponent "
+ abstract | address | anchor | authorblurb |
+ beginpage | blockquote | bridgehead | caution |
+ classsynopsis | cmdsynopsis | constructorsynopsis | destructorsynopsis |
+ epigraph | fieldsynopsis | formalpara | funcsynopsis |
+ graphic | graphicco | highlights | important |
+ indexterm | informalequation | informalexample | informalfigure |
+ informaltable | literallayout | mediaobject | mediaobjectco |
+ methodsynopsis | note | para | programlisting |
+ programlistingco | remark | screen | screenco |
+ screenshot | simpara | synopsis | tip |
+ warning ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- == itemizedlist ======================================================= -->
+
+<xsl:template match="itemizedlist">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="&listcomponent;"/>
+ <ul>
+ <xsl:if test="@spacing='compact'">
+ <xsl:attribute name="compact">
+ <xsl:value-of select="@spacing"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@mark">
+ <xsl:attribute name="style">
+ <xsl:text>list-style-type: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@mark = 'opencircle'">
+ <xsl:text>circle</xsl:text>
+ </xsl:when>
+ <xsl:when test="@mark = 'bullet'">
+ <xsl:text>disc</xsl:text>
+ </xsl:when>
+ <xsl:when test="@mark = 'box'">
+ <xsl:text>square</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@mark"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="listitem"/>
+ </ul>
+ </div>
+</xsl:template>
+
+<xsl:template match="itemizedlist/listitem">
+ <li>
+ <xsl:if test="@override">
+ <xsl:attribute name="style">
+ <xsl:text>list-style-type: </xsl:text>
+ <xsl:choose>
+ <xsl:when test="@override = 'opencircle'">
+ <xsl:text>circle</xsl:text>
+ </xsl:when>
+ <xsl:when test="@override = 'bullet'">
+ <xsl:text>disc</xsl:text>
+ </xsl:when>
+ <xsl:when test="@override = 'box'">
+ <xsl:text>square</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@override"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </li>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-math.xsl b/stylesheets/db2html-math.xsl
new file mode 100644
index 00000000..aef01c08
--- /dev/null
+++ b/stylesheets/db2html-math.xsl
@@ -0,0 +1,22 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="alt">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="equation">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="informalequation">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="inlineequation">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-media.xsl b/stylesheets/db2html-media.xsl
new file mode 100644
index 00000000..86f93a60
--- /dev/null
+++ b/stylesheets/db2html-media.xsl
@@ -0,0 +1,199 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template name="mediadata">
+ <xsl:variable name="element">
+ <xsl:choose>
+ <xsl:when test="
+ name(.) = 'imagedata' or
+ name(.) = 'graphic' or
+ name(.) = 'inlinegraphic' ">
+ <xsl:value-of select="'img'"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="{$element}">
+ <xsl:attribute name="src">
+ <xsl:value-of select="$mediaobject_path"/>
+ <xsl:choose>
+ <xsl:when test="@fileref">
+ <!-- FIXME: do this less stupidly, or not at all -->
+ <xsl:choose>
+ <xsl:when test="
+ @format = 'PNG' and
+ (substring(@fileref, string-length(@fileref) - 3)
+ != '.png')">
+ <xsl:value-of select="concat(@fileref, '.png')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@fileref"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="@entityref">
+ <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="@scale">
+ <xsl:attribute name="width">
+ <xsl:value-of select="concat(@scale, '%')"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="@width">
+ <xsl:attribute name="width">
+ <xsl:value-of select="@width"/>
+ </xsl:attribute>
+ <xsl:if test="@height">
+ <xsl:attribute name="height">
+ <xsl:value-of select="@height"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$textobject/phrase">
+ <xsl:attribute name="alt">
+ <xsl:value-of select="phrase[1]"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template name="mediaobject">
+ <xsl:choose>
+ <xsl:when test="$text_only">
+ <xsl:apply-templates select="textobject[1]"/>
+ </xsl:when>
+ <xsl:when test="imageobject[imagedata/@format = 'PNG']">
+ <xsl:apply-templates
+ select="imageobject[imagedata/@format = 'PNG'][1]">
+ <xsl:with-param name="textobject" select="textobject[1]"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:when test="imageobjectco[imageobject/imagedata/@format = 'PNG']">
+ <xsl:apply-templates
+ select="imageobjectco[imageobject/imagedata/@format = 'PNG'][1]">
+ <xsl:with-param name="textobject" select="textobject[1]"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="(imageobject | imageobjectco)[1]">
+ <xsl:with-param name="textobject" select="textobject[1]"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template match="graphic">
+ <xsl:param name="textobject" select="false()"/>
+ <xsl:call-template name="mediadata">
+ <xsl:with-param name="textobject" select="textobject"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="graphicco">
+ <xsl:param name="textobject" select="false()"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="graphic">
+ <xsl:with-param name="textobject" select="$textobject"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="calloutlist"/>
+</xsl:template>
+
+<xsl:template match="audiodata">
+ <!-- FIXME -->
+</xsl:template>
+
+<xsl:template match="audioobject">
+ <!-- FIXME -->
+</xsl:template>
+
+<xsl:template match="imagedata">
+ <xsl:param name="textobject" select="false()"/>
+ <xsl:call-template name="mediadata">
+ <xsl:with-param name="textobject" select="textobject"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="imageobject">
+ <xsl:param name="textobject" select="false()"/>
+ <xsl:apply-templates select="imagedata">
+ <xsl:with-param name="textobject" select="$textobject"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="imageobjectco">
+ <xsl:param name="textobject" select="false()"/>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates select="imageobject">
+ <xsl:with-param name="textobject" select="$textobject"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="calloutlist"/>
+</xsl:template>
+
+<xsl:template match="inlinegraphic">
+ <xsl:param name="textobject" select="false()"/>
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="mediadata">
+ <xsl:with-param name="textobject" select="textobject"/>
+ </xsl:call-template>
+ </span>
+</xsl:template>
+
+<xsl:template match="inlinemediaobject">
+ <span class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="mediaobject"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="mediaobject">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="mediaobject"/>
+ <xsl:apply-templates select="caption"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="mediaobjectco">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:call-template name="mediaobject"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="screenshot">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="textdata">
+ <!-- FIXME -->
+</xsl:template>
+
+<xsl:template match="textobject">
+ <!-- FIXME -->
+</xsl:template>
+
+<xsl:template match="videodata">
+ <!-- FIXME -->
+</xsl:template>
+
+<xsl:template match="videoobject">
+ <!-- FIXME -->
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-navbar.xsl b/stylesheets/db2html-navbar.xsl
new file mode 100644
index 00000000..ac1e12da
--- /dev/null
+++ b/stylesheets/db2html-navbar.xsl
@@ -0,0 +1,154 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY is-division "
+ (name(.) = 'appendix') or (name(.) = 'article') or
+ (name(.) = 'book') or (name(.) = 'bibliography') or
+ (name(.) = 'chapter') or (name(.) = 'colophon') or
+ (name(.) = 'glossary') or (name(.) = 'index') or
+ (name(.) = 'part') or (name(.) = 'preface') or
+ (name(.) = 'reference') or (name(.) = 'refentry') or
+ (name(.) = 'refsect1') or (name(.) = 'refsect2') or
+ (name(.) = 'refsect3') or (name(.) = 'refsection') or
+ (name(.) = 'sect1') or (name(.) = 'sect2') or
+ (name(.) = 'sect3') or (name(.) = 'sect4') or
+ (name(.) = 'sect5') or (name(.) = 'section') or
+ (name(.) = 'set') or (name(.) = 'setindex') or
+ (name(.) = 'simplesect') ">
+<!ENTITY is-info "
+ (name(.) = 'appendixinfo') or (name(.) = 'articleinfo') or
+ (name(.) = 'bibliographyinfo') or (name(.) = 'bookinfo') or
+ (name(.) = 'chapterinfo') or (name(.) = 'glossaryinfo') or
+ (name(.) = 'indexinfo') or (name(.) = 'partinfo') or
+ (name(.) = 'prefaceinfo') or (name(.) = 'refentryinfo') or
+ (name(.) = 'referenceinfo') or (name(.) = 'refsect1info') or
+ (name(.) = 'refsect2info') or (name(.) = 'refsect3info') or
+ (name(.) = 'refsectioninfo') or (name(.) = 'sect1info') or
+ (name(.) = 'sect2info') or (name(.) = 'sect3info') or
+ (name(.) = 'sect4info') or (name(.) = 'sect5info') or
+ (name(.) = 'sectioninfo') or (name(.) = 'setinfo') or
+ (name(.) = 'setindexinfo') ">
+]>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="*" mode="navbar.following.link.mode">
+ <xsl:variable name="depth" select="count(ancestor::*[&is-division;])"/>
+ <xsl:choose>
+ <xsl:when test="not(&is-division;)">
+ <xsl:apply-templates mode="navbar.following.link.mode"
+ select="ancestor::*[&is-division;][1]"/>
+ </xsl:when>
+ <xsl:when test="following-sibling::*[&is-division;]">
+ <xsl:variable name="foll"
+ select="following-sibling::*[&is-division;][1]"/>
+ <xsl:call-template name="xref">
+ <xsl:with-param name="linkend" select="$foll/@id"/>
+ <xsl:with-param name="target" select="$foll"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$depth &gt; 0">
+ <xsl:apply-templates select=".." mode="navbar.following.link.mode"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="navbar.last.link.mode">
+ <xsl:variable name="depth" select="count(ancestor::*[&is-division;])"/>
+ <xsl:choose>
+ <xsl:when test="not(&is-division;)">
+ <xsl:apply-templates mode="navbar.last.link.mode"
+ select="ancestor::*[&is-division;][1]"/>
+ </xsl:when>
+ <xsl:when test="$depth &gt; $chunk_depth">
+ <xsl:apply-templates select="." mode="navbar.prev.link.mode"/>
+ </xsl:when>
+ <xsl:when test="$depth = $chunk_depth">
+ <xsl:call-template name="xref">
+ <xsl:with-param name="linkend" select="@id"/>
+ <xsl:with-param name="target" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="*[&is-division;]">
+ <xsl:apply-templates mode="navbar.last.link.mode"
+ select="*[&is-division;][last()]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="xref">
+ <xsl:with-param name="linkend" select="@id"/>
+ <xsl:with-param name="target" select="."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="navbar.prev.link.mode">
+ <xsl:variable name="depth" select="count(ancestor::*[&is-division;])"/>
+ <xsl:variable name="chunk_id">
+ <xsl:apply-templates select="." mode="chunk.id.mode"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string($chunk_id) != @id">
+ <xsl:apply-templates select="id($chunk_id)" mode="navbar.prev.link.mode"/>
+ </xsl:when>
+ <xsl:when test="&is-info;"/>
+ <xsl:when test="$depth &gt; $chunk_depth">
+ <xsl:apply-templates select=".." mode="navbar.prev.link.mode"/>
+ </xsl:when>
+ <xsl:when test="
+ ($depth = $chunk_depth) and (preceding-sibling::*[&is-division;])">
+ <xsl:variable name="prev" select="preceding-sibling::*[&is-division;][1]"/>
+ <xsl:call-template name="xref">
+ <xsl:with-param name="linkend" select="$prev/@id"/>
+ <xsl:with-param name="target" select="$prev"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="preceding-sibling::*[&is-division;]">
+ <xsl:apply-templates mode="navbar.last.link.mode"
+ select="preceding-sibling::*[&is-division;][1]"/>
+ </xsl:when>
+ <xsl:when test="parent::*[&is-division;]">
+ <xsl:call-template name="xref">
+ <xsl:with-param name="linkend" select="../@id"/>
+ <xsl:with-param name="target" select=".."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$generate_titlepage and (. = /*) and *[&is-info;]">
+ <xsl:variable name="prev" select="*[&is-info;][1]"/>
+ <xsl:call-template name="xref">
+ <xsl:with-param name="linkend" select="$prev/@id"/>
+ <xsl:with-param name="target" select="$prev"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="*" mode="navbar.next.link.mode">
+ <xsl:variable name="depth" select="count(ancestor::*[&is-division;])"/>
+ <xsl:choose>
+ <xsl:when test="&is-info;">
+ <xsl:call-template name="xref">
+ <xsl:with-param name="linkend" select="../@id"/>
+ <xsl:with-param name="target" select=".."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="not(&is-division;)">
+ <xsl:apply-templates mode="navbar.next.link.mode"
+ select="ancestor::*[&is-division;][1]"/>
+ </xsl:when>
+ <xsl:when test="$depth &gt; $chunk_depth">
+ <xsl:apply-templates select="." mode="navbar.next.link.mode"/>
+ </xsl:when>
+ <xsl:when test="($depth &lt; $chunk_depth) and (*[&is-division;])">
+ <xsl:variable name="next" select="*[&is-division;][1]"/>
+ <xsl:call-template name="xref">
+ <xsl:with-param name="linkend" select="$next/@id"/>
+ <xsl:with-param name="target" select="$next"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="navbar.following.link.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-node.xsl b/stylesheets/db2html-node.xsl
new file mode 100644
index 00000000..28fe2179
--- /dev/null
+++ b/stylesheets/db2html-node.xsl
@@ -0,0 +1,771 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY is-info "
+ (name(.) = 'appendixinfo') or (name(.) = 'articleinfo') or
+ (name(.) = 'bibliographyinfo') or (name(.) = 'bookinfo') or
+ (name(.) = 'chapterinfo') or (name(.) = 'glossaryinfo') or
+ (name(.) = 'indexinfo') or (name(.) = 'partinfo') or
+ (name(.) = 'prefaceinfo') or (name(.) = 'refentryinfo') or
+ (name(.) = 'referenceinfo') or (name(.) = 'refsect1info') or
+ (name(.) = 'refsect2info') or (name(.) = 'refsect3info') or
+ (name(.) = 'refsectioninfo') or (name(.) = 'sect1info') or
+ (name(.) = 'sect2info') or (name(.) = 'sect3info') or
+ (name(.) = 'sect4info') or (name(.) = 'sect5info') or
+ (name(.) = 'sectioninfo') or (name(.) = 'setinfo') or
+ (name(.) = 'setindexinfo') or (name(.) = 'sidebarinfo') ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- == node.heading ======================================================= -->
+
+<xsl:template name="node.heading">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="content" select="false()"/>
+ <div class="header"><b>
+ <xsl:choose>
+ <xsl:when test="$content">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$node" mode="title.inline.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </b></div>
+</xsl:template>
+
+<!-- == node.header.header.mode ============================================ -->
+
+<!-- Defaults -->
+<xsl:template mode="node.header.header.mode" match="*">
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+</xsl:template>
+
+<!-- Divisions -->
+<xsl:template mode="node.header.header.mode" match="appendix | chapter | part">
+ <xsl:call-template name="format.header.header">
+ <xsl:with-param name="header">
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+ </xsl:with-param>
+ <xsl:with-param name="number">
+ <xsl:apply-templates select="." mode="node.number.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.header.mode" match="article | reference">
+ <xsl:variable name="node" select="."/>
+ <xsl:if test="
+ (preceding-sibling::*[name(.) = name($node)]) or
+ (following-sibling::*[name(.) = name($node)]) or
+ (parent::part/preceding-sibling::part/*[name(.) = name($node)]) or
+ (parent::part/following-sibling::part/*[name(.) = name($node)]) ">
+ <xsl:call-template name="format.header.number">
+ <xsl:with-param name="number">
+ <xsl:apply-templates select="." mode="node.number.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template mode="node.header.header.mode" match="book"/>
+<xsl:template mode="node.header.header.mode" match="bibliography"/>
+<xsl:template mode="node.header.header.mode" match="colophon"/>
+<xsl:template mode="node.header.header.mode" match="glossary"/>
+<xsl:template mode="node.header.header.mode" match="index"/>
+<xsl:template mode="node.header.header.mode" match="preface"/>
+<xsl:template mode="node.header.header.mode" match="refentry"/>
+<xsl:template mode="node.header.header.mode" match="refsect1"/>
+<xsl:template mode="node.header.header.mode" match="refsect2"/>
+<xsl:template mode="node.header.header.mode" match="refsect3"/>
+<xsl:template mode="node.header.header.mode" match="refsection"/>
+
+<xsl:template mode="node.header.header.mode" match="
+ sect1 | sect2 | sect3 | sect4 |
+ sect5 | section | simplesect ">
+ <xsl:call-template name="format.header.number">
+ <xsl:with-param name="number">
+ <xsl:apply-templates select="." mode="node.number.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.header.mode" match="set"/>
+<xsl:template mode="node.header.header.mode" match="setindex"/>
+
+<!-- Infos -->
+<xsl:template mode="node.header.header.mode" match="*[&is-info;]"/>
+
+<!-- Titles -->
+<xsl:template match="subtitle" mode="node.header.header.mode">
+ <xsl:apply-templates select=".." mode="node.header.header.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="node.header.header.mode">
+ <xsl:apply-templates select=".." mode="node.header.header.mode"/>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="node.header.header.mode">
+ <xsl:apply-templates select=".." mode="node.header.header.mode"/>
+</xsl:template>
+
+<!-- Blocks -->
+<xsl:template match="example | figure | table" mode="node.header.header.mode">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:call-template name="format.header">
+ <xsl:with-param name="header" select="@label"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="format.header.header">
+ <xsl:with-param name="header">
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+ </xsl:with-param>
+ <xsl:with-param name="number">
+ <xsl:apply-templates select="." mode="node.number.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- == node.header.inline.mode ============================================ -->
+
+<!-- Defaults -->
+<xsl:template mode="node.header.inline.mode" match="*">
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+</xsl:template>
+
+<!-- Divisions -->
+<xsl:template mode="node.header.inline.mode" match="
+ appendix | chapter | part | refsect1 | refsect2 | refsect3 |
+ refsection | sect1 | sect2 | sect3 | sect4 | sect5 |
+ section | simplesect ">
+ <xsl:call-template name="format.header.inline">
+ <xsl:with-param name="header">
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+ </xsl:with-param>
+ <xsl:with-param name="number">
+ <xsl:apply-templates select="." mode="node.number.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="article | reference">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:when test="*[&is-info;]/titleabbrev">
+ <xsl:apply-templates select="*[&is-info;]/titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title/node()"/>
+ </xsl:when>
+ <xsl:when test="*[&is-info;]/title">
+ <xsl:apply-templates select="*[&is-info;]/title/node()"/>
+ </xsl:when>
+ <xsl:when test="
+ (preceding-sibling::*[name(.) = name($node)]) or
+ (following-sibling::*[name(.) = name($node)]) or
+ (parent::part/preceding-sibling::part/*[name(.) = name($node)]) or
+ (parent::part/following-sibling::part/*[name(.) = name($node)]) ">
+ <xsl:call-template name="format.header.inline">
+ <xsl:with-param name="header">
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+ </xsl:with-param>
+ <xsl:with-param name="number">
+ <xsl:apply-templates select="." mode="node.number.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="
+ book | bibliography | colophon | glossary |
+ index | preface | set | setindex ">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:when test="*[&is-info;]/titleabbrev">
+ <xsl:apply-templates select="*[&is-info;]/titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title/node()"/>
+ </xsl:when>
+ <xsl:when test="*[&is-info;]/title">
+ <xsl:apply-templates select="*[&is-info;]/title/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="refentry">
+ <xsl:choose>
+ <xsl:when test="refentryinfo/titleabbrev">
+ <xsl:apply-templates select="refentryinfo/titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:when test="refentryinfo/title">
+ <xsl:apply-templates select="refentryinfo/title/node()"/>
+ </xsl:when>
+ <xsl:when test="refsynopsisdiv/titleabbrev">
+ <xsl:apply-templates select="refsynopsisdiv/titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:when test="refsynopsisdiv/title">
+ <xsl:apply-templates select="refsynopsisdiv/title/node()"/>
+ </xsl:when>
+ <xsl:when test="refsynopsisdiv/refsynopsisdivinfo/titleabbrev">
+ <xsl:apply-templates
+ select="refsynopsisdiv/refsynopsisdivinfo/titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:when test="refsynopsisdiv/refsynopsisdivinfo/title">
+ <xsl:apply-templates
+ select="refsynopsisdiv/refsynopsisdivinfo/title/node()"/>
+ </xsl:when>
+ <xsl:when test="refnamediv/refdescriptor">
+ <xsl:apply-templates select="refnamediv/refdescriptor/node()"/>
+ </xsl:when>
+ <xsl:when test="refnamediv/refname">
+ <xsl:apply-templates select="refnamediv/refname[1]/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- Infos -->
+<xsl:template mode="node.header.inline.mode" match="appendixinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Appendix'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="articleinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Article'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="bibliographyinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Bibliography'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="bookinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Book'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="chapterinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Chapter'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="glossaryinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Glossary'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="indexinfo | setindexinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Index'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="partinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Part'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="prefaceinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Preface'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="refentryinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Entry'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="referenceinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Reference'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="
+ refsect1info | refsect2info | refsect3info | refsectioninfo |
+ sect1info | sect2info | sect3info | sect4info |
+ sect5info | sectioninfo ">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.header.inline.mode" match="setinfo">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'About This Set'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Titles -->
+<xsl:template match="subtitle" mode="node.header.inline.mode">
+ <xsl:apply-templates select=".." mode="node.header.inline.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="node.header.inline.mode">
+ <xsl:apply-templates select=".." mode="node.header.inline.mode"/>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="node.header.inline.mode">
+ <xsl:apply-templates select=".." mode="node.header.inline.mode"/>
+</xsl:template>
+
+<!-- Blocks -->
+<xsl:template match="example | figure | table" mode="node.header.inline.mode">
+ <xsl:choose>
+ <xsl:when test="@label">
+ <xsl:value-of select="@label"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="format.header.inline">
+ <xsl:with-param name="header">
+ <xsl:apply-templates select="." mode="node.name.mode"/>
+ </xsl:with-param>
+ <xsl:with-param name="number">
+ <xsl:apply-templates select="." mode="node.number.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="glossentry" mode="node.header.inline.mode">
+ <xsl:apply-templates select="glossterm[1]" mode="node.header.inline.mode"/>
+</xsl:template>
+
+<xsl:template match="glossterm" mode="node.header.inline.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<!-- == node.name.mode ===================================================== -->
+
+<!-- Defaults -->
+<xsl:template match="*" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Unknown'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Divisions -->
+<xsl:template match="appendix" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Appendix'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="article" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Article'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="book" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Book'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="bibliography" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Bigliography'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="chapter" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Chapter'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="colophon" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Colophon'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="glossary" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Glossary'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="index" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Index'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="part" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Part'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="preface" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Preface'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="reference" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Reference'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="refentry" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Reference Entry'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="refsect1" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Reference Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="refsect2" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Reference Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="refsect3" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Reference Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="refsection" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Reference Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect1" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect2" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect3" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect4" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="sect5" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="section" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Section'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="set" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Set'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="setindex" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Set Index'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- Titles -->
+<xsl:template match="subtitle" mode="node.name.mode">
+ <xsl:apply-templates select=".." mode="node.name.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="node.name.mode">
+ <xsl:apply-templates select=".." mode="node.name.mode"/>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="node.name.mode">
+ <xsl:apply-templates select=".." mode="node.name.mode"/>
+</xsl:template>
+
+<!-- Blocks -->
+<xsl:template match="caution" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Caution'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="dedication" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Dedication'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="example" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Example'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="figure" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Figure'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="important" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Important'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="msgaud" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Message Audience'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="msglevel" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Message Level'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="msgorig" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Message Origin'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="note" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Note'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="table" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Table'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="tip" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Tip'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="warning" mode="node.name.mode">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Warning'"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- == node.number.mode =================================================== -->
+
+<!-- Defaults -->
+<xsl:template match="*" mode="node.number.mode">
+ <xsl:apply-templates select=".." mode="node.number.mode"/>
+</xsl:template>
+
+<!-- Divisions -->
+<xsl:template mode="node.number.mode" match="appendix">
+ <xsl:call-template name="format.appendix.number">
+ <xsl:with-param name="appendix" select="
+ count(preceding-sibling::appendix) + 1 +
+ count(parent::part/preceding-sibling::part/appendix)"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.number.mode" match="article">
+ <xsl:call-template name="format.article.number">
+ <xsl:with-param name="article" select="
+ count(preceding-sibling::article) + 1 +
+ count(parent::part/preceding-sibling::part/article)"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.number.mode" match="book"/>
+<xsl:template mode="node.number.mode" match="bibliography"/>
+<xsl:template mode="node.number.mode" match="colophon"/>
+
+<xsl:template mode="node.number.mode" match="chapter">
+ <xsl:call-template name="format.chapter.number">
+ <xsl:with-param name="chapter" select="
+ count(preceding-sibling::chapter) + 1 +
+ count(parent::part/preceding-sibling::part/chapter)"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.number.mode" match="glossary"/>
+<xsl:template mode="node.number.mode" match="index"/>
+
+<xsl:template mode="node.number.mode" match="part">
+ <xsl:call-template name="format.part.number">
+ <xsl:with-param name="part" select="
+ count(preceding-sibling::part) + 1"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.number.mode" match="preface"/>
+
+<xsl:template mode="node.number.mode" match="reference">
+ <xsl:call-template name="format.reference.number">
+ <xsl:with-param name="reference" select="
+ count(preceding-sibling::reference) + 1 +
+ count(parent::part/preceding-sibling::part/reference)"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.number.mode" match="
+ refentry | refsect1 | refsect2 | refsect3 | refsection |
+ sect1 | sect2 | sect3 | sect4 | sect5 |
+ section | simplesect ">
+ <xsl:variable name="sect" select="."/>
+ <xsl:call-template name="format.section.number">
+ <xsl:with-param name="parent">
+ <xsl:apply-templates select=".." mode="node.number.mode"/>
+ </xsl:with-param>
+ <xsl:with-param name="section" select="
+ count(preceding-sibling::*[name(.) = name($sect)]) + 1"/>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template mode="node.number.mode" match="set"/>
+<xsl:template mode="node.number.mode" match="setindex"/>
+
+<!-- Titles -->
+<xsl:template match="subtitle" mode="node.number.mode">
+ <xsl:apply-templates select=".." mode="node.number.mode"/>
+</xsl:template>
+
+<xsl:template match="title" mode="node.number.mode">
+ <xsl:apply-templates select=".." mode="node.number.mode"/>
+</xsl:template>
+
+<xsl:template match="titleabbrev" mode="node.number.mode">
+ <xsl:apply-templates select=".." mode="node.number.mode"/>
+</xsl:template>
+
+<!-- Blocks -->
+<xsl:template mode="node.number.mode" match="example | figure | table">
+ <xsl:variable name="parent">
+ <xsl:choose>
+ <xsl:when test="
+ ancestor::*[
+ (name(.) = 'refentry') or (name(.) = 'sect1') or
+ (name(.) = 'section') or (name(.) = 'simplesect') ]
+ [parent::article]">
+ <xsl:apply-templates mode="node.number.mode" select="
+ ancestor::*[
+ (name(.) = 'refentry') or (name(.) = 'sect1') or
+ (name(.) = 'section') or (name(.) = 'simplesect') ]
+ [parent::article][last()]"/>
+ </xsl:when>
+ <xsl:when test="ancestor::*[name(.) = 'appendix' or name(.) = 'chapter']">
+ <xsl:apply-templates mode="node.number.mode" select="
+ ancestor::*[name(.) = 'appendix' or name(.) = 'chapter'][1]"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="num">
+ <xsl:choose>
+ <xsl:when test="
+ ancestor::*[
+ (name(.) = 'refentry') or (name(.) = 'sect1') or
+ (name(.) = 'section') or (name(.) = 'simplesect') ]
+ [parent::article]">
+ <xsl:value-of select="count(
+ ancestor-or-self::*[ancestor::*[
+ (name(.) = 'refentry') or (name(.) = 'sect1') or
+ (name(.) = 'section') or (name(.) = 'simplesect') ]
+ [parent::article]
+ ]/preceding-sibling::*/descendant-or-self::*[
+ name(.) = name(current())]
+ ) + 1"/>
+ </xsl:when>
+ <xsl:when test="ancestor::*[name(.) = 'appendix' or name(.) = 'chapter']">
+ <xsl:value-of select="count(
+ ancestor-or-self::*[ancestor::*[
+ name(.) = 'appendix' or name(.) = 'chapter' ]
+ ]/preceding-sibling::*/descendant-or-self::*[
+ name(.) = name(current())]
+ ) + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="count(preceding::*[name(.) = name(current())]) + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="not($parent)">
+ <xsl:value-of select="$num"/>
+ </xsl:when>
+ <xsl:when test="name(.) = 'example'">
+ <xsl:call-template name="format.example.number">
+ <xsl:with-param name="parent" select="$parent"/>
+ <xsl:with-param name="example" select="$num"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(.) = 'figure'">
+ <xsl:call-template name="format.figure.number">
+ <xsl:with-param name="parent" select="$parent"/>
+ <xsl:with-param name="figure" select="$num"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="name(.) = 'table'">
+ <xsl:call-template name="format.table.number">
+ <xsl:with-param name="parent" select="$parent"/>
+ <xsl:with-param name="table" select="$num"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-param.xsl b/stylesheets/db2html-param.xsl
new file mode 100644
index 00000000..43697288
--- /dev/null
+++ b/stylesheets/db2html-param.xsl
@@ -0,0 +1,49 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:param name="stylesheet_path" select="''"/>
+
+<xsl:param name="admon_graphics_extension" select="'.png'"/>
+<xsl:param name="admon_graphics_path">
+ <xsl:choose>
+ <xsl:when test="$stylesheet_path != ''">
+ <xsl:value-of select="concat($stylesheet_path, 'images/')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'./images/'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:param name="chunk_depth" select="2"/>
+
+<xsl:param name="classsynopsis_default_langauge" select="'idl'"/>
+
+<xsl:param name="doc_name" select="''"/>
+<xsl:param name="doc_path" select="''"/>
+
+<xsl:param name="generate_titlepage" select="true()"/>
+<xsl:param name="generate_navbar" select="true()"/>
+
+<xsl:param name="html_extension" select="'.html'"/>
+
+<xsl:param name="lang">
+ <xsl:choose>
+ <xsl:when test="/*/@lang">
+ <xsl:value-of select="/*/@lang"/>
+ </xsl:when>
+ <xsl:when test="/*/@xml:lang">
+ <xsl:value-of select="/*/@xml:lang"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>C</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:param>
+
+<xsl:param name="mediaobject_path" select="$doc_path"/>
+
+<xsl:param name="text_only" select="false()"/>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-qanda.xsl b/stylesheets/db2html-qanda.xsl
new file mode 100644
index 00000000..d138b8b0
--- /dev/null
+++ b/stylesheets/db2html-qanda.xsl
@@ -0,0 +1,30 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="answer">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="label">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="qandadiv">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="qandaentry">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="qandaset">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="question">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-refentry.xsl b/stylesheets/db2html-refentry.xsl
new file mode 100644
index 00000000..e02b62f5
--- /dev/null
+++ b/stylesheets/db2html-refentry.xsl
@@ -0,0 +1,95 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY is-division "
+ (name(.) = 'appendix') or (name(.) = 'article') or
+ (name(.) = 'book') or (name(.) = 'bibliography') or
+ (name(.) = 'chapter') or (name(.) = 'colophon') or
+ (name(.) = 'glossary') or (name(.) = 'index') or
+ (name(.) = 'part') or (name(.) = 'preface') or
+ (name(.) = 'reference') or (name(.) = 'refentry') or
+ (name(.) = 'refsect1') or (name(.) = 'refsect2') or
+ (name(.) = 'refsect3') or (name(.) = 'refsection') or
+ (name(.) = 'sect1') or (name(.) = 'sect2') or
+ (name(.) = 'sect3') or (name(.) = 'sect4') or
+ (name(.) = 'sect5') or (name(.) = 'section') or
+ (name(.) = 'set') or (name(.) = 'setindex') or
+ (name(.) = 'simplesect') ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="manvolnum">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="refclass">
+ <div class="{name(.)}">
+ <b>
+ <xsl:if test="@role">
+ <xsl:value-of select="@role"/>
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ </b>
+ <xsl:apply-templates/>
+ </div>
+</xsl:template>
+
+<xsl:template match="refdescriptor">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="refentrytitle">
+ <xsl:param name="depth" select="count(ancestor::*[&is-division;]) - 1"/>
+ <xsl:variable name="element">
+ <xsl:choose>
+ <xsl:when test="$depth &lt; 7">
+ <xsl:value-of select="concat('h', $depth + 1)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'h7'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="{$element}">
+ <xsl:attribute name="class">
+ <xsl:value-of select="'refentry'"/>
+ </xsl:attribute>
+ <xsl:call-template name="anchor"/>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="refname">
+ <xsl:apply-templates/>
+ <xsl:if test="following-sibling::refname">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refnamediv">
+ <xsl:call-template name="block"/>
+</xsl:template>
+
+<xsl:template match="refpurpose">
+ <xsl:text> &#8212; </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="refsynopsisdiv">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="title or refsynopsisdivinfo/title">
+ <xsl:call-template name="node.heading"/>
+ </xsl:if>
+ <xsl:apply-templates select="*[
+ name(.) != 'refsynopsisdivinfo' and
+ name(.) != 'title' and
+ name(.) != 'subtitle' and
+ name(.) != 'titleabbrev' ]"/>
+ </div>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-section.xsl b/stylesheets/db2html-section.xsl
new file mode 100644
index 00000000..56dfe565
--- /dev/null
+++ b/stylesheets/db2html-section.xsl
@@ -0,0 +1,133 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template name="section">
+ <xsl:param name="content" select="*[yelp:is-content(.)]"/>
+ <xsl:param name="divisions" select="*[yelp:is-division(.)]"/>
+ <div class="{name(.)}">
+ <xsl:apply-templates select="title"/>
+ <xsl:apply-templates select="subtitle"/>
+ <xsl:apply-templates select="$content"/>
+ <xsl:choose>
+ <xsl:when test="yelp:get-depth(.) &lt; $chunk_depth">
+ <xsl:call-template name="toc.verbose"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$divisions"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template match="appendix">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="article">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="book">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="bibliography">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="chapter">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="chapter">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="colophon">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="glossary">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="index">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="part">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="preface">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="reference">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="refsect1">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="refsect2">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="refsect3">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="refsection">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="sect1">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="sect2">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="sect3">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="sect4">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="sect5">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="section">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="set">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="setindex">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<xsl:template match="simplesect">
+ <xsl:call-template name="section"/>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-suppressed.xsl b/stylesheets/db2html-suppressed.xsl
new file mode 100644
index 00000000..9417a51c
--- /dev/null
+++ b/stylesheets/db2html-suppressed.xsl
@@ -0,0 +1,102 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template match="ackno"/>
+<xsl:template match="affiliation"/>
+<xsl:template match="authorblurb"/>
+<xsl:template match="authorgroup"/>
+<xsl:template match="artpagenums"/>
+<xsl:template match="beginpage"/>
+<xsl:template match="blockinfo"/>
+<xsl:template match="bridgehead"/>
+<xsl:template match="citebiblioid"/>
+<xsl:template match="collab"/>
+<xsl:template match="collabname"/>
+<xsl:template match="colspec"/>
+
+<xsl:template match="confdates"/>
+<xsl:template match="confgroup"/>
+<xsl:template match="confnum"/>
+<xsl:template match="confsponsor"/>
+<xsl:template match="conftitle"/>
+
+<xsl:template match="copyright"/>
+<xsl:template match="corpname"/>
+<xsl:template match="contrib"/>
+<xsl:template match="contractnum"/>
+<xsl:template match="contractsponsor"/>
+<xsl:template match="date"/>
+<xsl:template match="edition"/>
+<xsl:template match="firstname"/>
+<xsl:template match="holder"/>
+<xsl:template match="honorific"/>
+<xsl:template match="indexterm"/>
+<xsl:template match="invpartnumber"/>
+<xsl:template match="isbn"/>
+<xsl:template match="issn"/>
+<xsl:template match="issuenum"/>
+<xsl:template match="itermset"/>
+<xsl:template match="keyword"/>
+<xsl:template match="keywordset"/>
+<xsl:template match="legalnotice"/>
+<xsl:template match="lineage"/>
+
+<xsl:template match="lot"/>
+<xsl:template match="lotentry"/>
+
+<xsl:template match="modespec"/>
+<xsl:template match="objectinfo"/>
+<xsl:template match="othername"/>
+<xsl:template match="pagenums"/>
+<xsl:template match="personblurb"/>
+<xsl:template match="pubdate"/>
+<xsl:template match="publisher"/>
+<xsl:template match="publishername"/>
+<xsl:template match="pubsnumber"/>
+<xsl:template match="primary"/>
+<xsl:template match="printhistory"/>
+
+<xsl:template match="refentryinfo"/>
+<xsl:template match="refmeta"/>
+<xsl:template match="refmiscinfo"/>
+<xsl:template match="refsynopsisdivinfo"/>
+
+<xsl:template match="releaseinfo"/>
+<xsl:template match="remark"/>
+
+<xsl:template match="revdescription"/>
+<xsl:template match="revhistory"/>
+<xsl:template match="revision"/>
+<xsl:template match="revnumber"/>
+<xsl:template match="revremark"/>
+
+<xsl:template match="screeninfo"/>
+<xsl:template match="secondary"/>
+<xsl:template match="seriesvolnums"/>
+<xsl:template match="shortaffil"/>
+<xsl:template match="sidebarinfo"/>
+<xsl:template match="spanspec"/>
+<xsl:template match="subject"/>
+<xsl:template match="subjectset"/>
+<xsl:template match="subjectterm"/>
+<xsl:template match="surname"/>
+<xsl:template match="tertiary"/>
+<xsl:template match="titleabbrev"/>
+
+<xsl:template match="toc"/>
+<xsl:template match="tocback"/>
+<xsl:template match="tocchap"/>
+<xsl:template match="tocentry"/>
+<xsl:template match="tocfront"/>
+<xsl:template match="toclevel1"/>
+<xsl:template match="toclevel2"/>
+<xsl:template match="toclevel3"/>
+<xsl:template match="toclevel4"/>
+<xsl:template match="toclevel5"/>
+<xsl:template match="tocpart"/>
+
+<xsl:template match="volumenum"/>
+<xsl:template match="year"/>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-synopsis.xsl b/stylesheets/db2html-synopsis.xsl
new file mode 100644
index 00000000..31173c44
--- /dev/null
+++ b/stylesheets/db2html-synopsis.xsl
@@ -0,0 +1,621 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template name="synopsis.br">
+ <xsl:if test="
+ parent::classsynopsis or
+ following-sibling::constructorsynopsis or
+ following-sibling::destructorsynopsis or
+ following-sibling::fieldsynopsis or
+ following-sibling::methodsynopsis ">
+ <br/>
+ </xsl:if>
+</xsl:template>
+
+<!-- == classsynopsis ====================================================== -->
+
+<xsl:template match="classsynopsisinfo">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="
+ classsynopsis | constructorsynopsis | fieldsynopsis |
+ methodsynopsis | destructorsynopsis ">
+ <xsl:param name="language">
+ <xsl:choose>
+ <xsl:when test="@language">
+ <xsl:value-of select="@language"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$classsynopsis_default_language"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$language = 'cpp'">
+ <xsl:apply-templates select="." mode="classsynopsis.cpp"/>
+ </xsl:when>
+ <xsl:when test="$language = 'idl'">
+ <xsl:apply-templates select="." mode="classsynopsis.idl"/>
+ </xsl:when>
+ <xsl:when test="$language = 'java'">
+ <xsl:apply-templates select="." mode="classsynopsis.java"/>
+ </xsl:when>
+ <xsl:when test="$language = 'perl'">
+ <xsl:apply-templates select="." mode="classsynopsis.perl"/>
+ </xsl:when>
+ <xsl:when test="$language = 'python'">
+ <xsl:apply-templates select="." mode="classsynopsis.perl"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="language"
+ select="$classsynopsis_default_language"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- == cmdsynopsis ======================================================== -->
+
+<xsl:template match="cmdsynopsis">
+ <div class="{name(.)}">
+ <p>
+ <xsl:call-template name="anchor"/>
+ <xsl:for-each select="*">
+ <xsl:if test="name(.) = 'command' and position() != 1">
+ <br/>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+ </p>
+ </div>
+</xsl:template>
+
+<xsl:template match="arg | group">
+ <xsl:variable name="sepchar">
+ <xsl:choose>
+ <xsl:when test="ancestor-or-self::*[@sepchar]">
+ <xsl:value-of select="ancestor-or-self::[@sepchar][1]/@sepchar"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="$sepchar"/>
+ <xsl:choose>
+ <xsl:when test="@choice = 'plain'">
+ <xsl:text> </xsl:text>
+ </xsl:when>
+ <xsl:when test="@choice = 'req'">
+ <xsl:text>{</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>[</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="name(.) = 'group'">
+ <xsl:for-each select="*">
+ <xsl:if test="name(.) = 'arg' and position() != 1">
+ <xsl:text> |</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="@rep = 'repeat'">
+ <xsl:text>...</xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="@choice = 'plain'">
+ <xsl:text> </xsl:text>
+ </xsl:when>
+ <xsl:when test="@choice = 'req'">
+ <xsl:text>}</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>]</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="sbr">
+ <br/>
+</xsl:template>
+
+<xsl:template match="synopfragment">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template match="synopfragmentref">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<!-- == funcsynopsis ======================================================= -->
+
+<xsl:template match="funcsynopsisinfo">
+ <pre class="{name(.)}"><xsl:apply-templates/></pre>
+</xsl:template>
+
+<xsl:template match="funcdef">
+ <code class="{name(.)}">
+ <xsl:apply-templates/>
+ </code>
+</xsl:template>
+
+<xsl:template match="funcparams">
+ <xsl:text>(</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+<xsl:template match="funcprototype">
+ <p>
+ <code>
+ <xsl:apply-templates select="funcdef"/>
+ <xsl:text> (</xsl:text>
+ <xsl:for-each select="*">
+ <xsl:apply-templates select="."/>
+ <xsl:if test="position() != last()">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:text>);</xsl:text>
+ </code>
+ </p>
+</xsl:template>
+
+<xsl:template match="paramdef">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="varargs">
+ <xsl:text>...</xsl:text>
+</xsl:template>
+
+<xsl:template match="void">
+ <xsl:text>void</xsl:text>
+</xsl:template>
+
+<!-- == synopsis.cpp.mode ================================================== -->
+
+<xsl:template mode="synopsis.cpp.mode" match="*">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="classsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="classsynopsisinfo">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="classname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="constructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="destructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="exceptionname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="fieldsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="initializer">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="interfacename">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="methodname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="methodparam">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="methodsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="modifier">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="ooclass">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="ooexception">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="oointerface">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="parameter">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="type">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="varname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.cpp.mode" match="void">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<!-- == synopsis.idl.mode ================================================== -->
+
+<xsl:template mode="synopsis.idl.mode" match="*">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="classsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="classsynopsisinfo">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="classname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="constructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="destructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="exceptionname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="fieldsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="initializer">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="interfacename">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="methodname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="methodparam">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="methodsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="modifier">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="ooclass">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="ooexception">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="oointerface">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="parameter">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="type">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="varname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.idl.mode" match="void">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<!-- == synopsis.java.mode ================================================= -->
+
+<xsl:template mode="synopsis.java.mode" match="*">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="classsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="classsynopsisinfo">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="classname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="constructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="destructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="exceptionname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="fieldsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="initializer">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="interfacename">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="methodname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="methodparam">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="methodsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="modifier">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="ooclass">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="ooexception">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="oointerface">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="parameter">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="type">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="varname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.java.mode" match="void">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<!-- == synopsis.perl.mode ================================================= -->
+
+<xsl:template mode="synopsis.perl.mode" match="*">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="classsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="classsynopsisinfo">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="classname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="constructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="destructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="exceptionname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="fieldsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="initializer">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="interfacename">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="methodname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="methodparam">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="methodsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="modifier">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="ooclass">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="ooexception">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="oointerface">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="parameter">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="type">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="varname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.perl.mode" match="void">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<!-- == synopsis.python.mode ================================================= -->
+
+<xsl:template mode="synopsis.python.mode" match="*">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="classsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="classsynopsisinfo">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="classname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="constructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="destructorsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="exceptionname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="fieldsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="initializer">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="interfacename">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="methodname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="methodparam">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="methodsynopsis">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="modifier">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="ooclass">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="ooexception">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="oointerface">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="parameter">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="type">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="varname">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template mode="synopsis.python.mode" match="void">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-table.xsl b/stylesheets/db2html-table.xsl
new file mode 100644
index 00000000..c86c68b8
--- /dev/null
+++ b/stylesheets/db2html-table.xsl
@@ -0,0 +1,603 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+<xsl:template name="entry" match="entry | entrytbl">
+ <xsl:param name="colspecs"/>
+ <xsl:param name="spanspecs"/>
+ <xsl:param name="colsep" select="false()"/>
+ <xsl:param name="rowsep" select="false()"/>
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+ <xsl:variable name="named.colnum">
+ <xsl:call-template name="entry.colnum">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="entry" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="entry.colnum">
+ <xsl:choose>
+ <xsl:when test="$named.colnum &gt; 0">
+ <xsl:value-of select="$named.colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$col"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="entry" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="element">
+ <xsl:choose>
+ <xsl:when
+ test="name(../..) = 'thead' or name(../..) = 'tfoot'">th</xsl:when>
+ <xsl:otherwise>td</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="style">
+ <xsl:if test="(following-sibling::*) and (
+ (@colsep = '1') or
+ ($colspecs[@colname = current()/@colname]/@colsep = '1') or
+ ($colspecs[@colname = current()/@nameend]/@colsep = '1') or
+ ($spanspecs[@spanname = current()/@spanname]/@colsep = '1') or
+ ($colsep = '1' and (
+ (@colsep != '0') or
+ ($colspecs[@colname = current()/@colname]/@colsep != '0') or
+ ($colspecs[@colname = current()/@nameend]/@colsep != '0') or
+ ($spanspecs[@spanname = current()/@spanname]/@colsep != '0')
+ )) )">
+ <xsl:text>border-right: outset 1px; </xsl:text>
+ </xsl:if>
+ <xsl:if test="(../following-sibling::*) and (
+ (@rowsep = '1') or
+ ($colspecs[@colname = current()/@colname]/@rowsep = '1') or
+ ($colspecs[@colname = current()/@namest]/@rowsep = '1') or
+ ($spanspecs[@spanname = current()/@spanname]/@rowsep = '1') or
+ ($rowsep = '1' and (
+ (@rowsep != '0') or
+ ($colspecs[@colname = current()/@colname]/@rowsep != '0') or
+ ($colspecs[@colname = current()/@namest]/@rowsep != '0') or
+ ($spanspecs[@spanname = current()/@spanname]/@rowsep != '0')
+ )) )">
+ <xsl:text>border-bottom: outset 1px; </xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="@align">
+ <xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="@align"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when
+ test="$colspecs[@colname = current()/@colname]/@align">
+ <xsl:text>text-align: </xsl:text>
+ <xsl:value-of
+ select="$colspecs[@colname = current()/@colname]/@align"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when
+ test="$colspecs[@colname = current()/@namest]/@align">
+ <xsl:text>text-align: </xsl:text>
+ <xsl:value-of
+ select="$colspecs[@colname = current()/@namest]/@align"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when
+ test="$spanspecs[@spanname = current()/@spanname]/@align">
+ <xsl:text>text-align: </xsl:text>
+ <xsl:value-of
+ select="$spanspecs[@spanname = current()/@spanname]/@align"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when test="../../../@align">
+ <xsl:text>text-align: </xsl:text>
+ <xsl:value-of select="../../../@align"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="@valign">
+ <xsl:text>vertical-align: </xsl:text>
+ <xsl:value-of select="@valign"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when
+ test="$colspecs[@colname = current()/@colname]/@valign">
+ <xsl:text>vertical-align: </xsl:text>
+ <xsl:value-of
+ select="$colspecs[@colname = current()/@colname]/@valign"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when
+ test="$colspecs[@colname = current()/@namest]/@valign">
+ <xsl:text>vertical-align: </xsl:text>
+ <xsl:value-of
+ select="$colspecs[@colname = current()/@namest]/@valign"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when
+ test="$spanspecs[@spanname = current()/@spanname]/@valign">
+ <xsl:text>vertical-align: </xsl:text>
+ <xsl:value-of
+ select="$spanspecs[@spanname = current()/@spanname]/@valign"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when test="../@valign">
+ <xsl:text>vertical-align: </xsl:text>
+ <xsl:value-of select="../@valign"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ <xsl:when test="../../@valign">
+ <xsl:text>vertical-align: </xsl:text>
+ <xsl:value-of select="../../@valign"/>
+ <xsl:text>; </xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans, '0:'))">
+ <xsl:call-template name="entry">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="col" select="$col + 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans, ':')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry.colnum &gt; $col">
+ <td>
+ <xsl:if test="$style">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$style"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:text>&#160;</xsl:text>
+ </td>
+ <xsl:call-template name="entry">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="col" select="$col + 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans, ':')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="char">
+ <xsl:choose>
+ <xsl:when test="@char">
+ <xsl:value-of select="@char"/>
+ </xsl:when>
+ <xsl:when
+ test="$colspecs[@colname = current()/@colname]/@char">
+ <xsl:value-of
+ select="$colspecs[@colname = current()/@colname]/@char"/>
+ </xsl:when>
+ <xsl:when
+ test="$colspecs[@colname = current()/@namest]/@char">
+ <xsl:value-of
+ select="$colspecs[@colname = current()/@namest]/@char"/>
+ </xsl:when>
+ <xsl:when
+ test="$spanspecs[@spanname = current()/@spanname]/@char">
+ <xsl:value-of
+ select="$spanspecs[@spanname = current()/@spanname]/@char"/>
+ </xsl:when>
+ <xsl:when test="../../../@char">
+ <xsl:value-of select="../../@char"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="charoff">
+ <xsl:choose>
+ <xsl:when test="@charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:when>
+ <xsl:when
+ test="$colspecs[@colname = current()/@colname]/@charoff">
+ <xsl:value-of
+ select="$colspecs[@colname = current()/@colname]/@charoff"/>
+ </xsl:when>
+ <xsl:when
+ test="$colspecs[@colname = current()/@namest]/@charoff">
+ <xsl:value-of
+ select="$colspecs[@colname = current()/@namest]/@charoff"/>
+ </xsl:when>
+ <xsl:when
+ test="$spanspecs[@spanname = current()/@spanname]/@charoff">
+ <xsl:value-of
+ select="$spanspecs[@spanname = current()/@spanname]/@charoff"/>
+ </xsl:when>
+ <xsl:when test="../../../@charoff">
+ <xsl:value-of select="../../@charoff"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:element name="{$element}">
+ <xsl:if test="$style != ''">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$style"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@morerows &gt; 0">
+ <xsl:attribute name="rowspan">
+ <xsl:value-of select="@morerows + 1"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$entry.colspan &gt; 1">
+ <xsl:attribute name="colspan">
+ <xsl:value-of select="$entry.colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$char != ''">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$charoff != ''">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:element>
+ <xsl:apply-templates select="following-sibling::*[1]">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colsep" select="$colsep"/>
+ <xsl:with-param name="rowsep" select="$rowsep"/>
+ <xsl:with-param name="col" select="$col + $entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="tbody | tfoot | thead">
+ <xsl:param name="colspecs"/>
+ <xsl:param name="spanspecs"/>
+ <xsl:param name="colsep" select="false()"/>
+ <xsl:param name="rowsep" select="false()"/>
+ <xsl:element name="{name(.)}">
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="colspec">
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="colspecs" select="colspec"/>
+ <xsl:with-param name="spanspecs" select="spanspec"/>
+ <xsl:with-param name="colsep" select="$colsep"/>
+ <xsl:with-param name="rowsep" select="$rowsep"/>
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="row[1]">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colsep" select="$colsep"/>
+ <xsl:with-param name="rowsep" select="$rowsep"/>
+ </xsl:apply-templates>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="tgroup">
+ <xsl:variable name="style">
+ <xsl:if test="(../@frame) and (../@frame != 'all')">
+ <xsl:text>border: none; </xsl:text>
+ </xsl:if>
+ <xsl:if test="../@frame = 'bottom' or ../@frame = 'topbot'">
+ <xsl:text>border-bottom: outset 1px; </xsl:text>
+ </xsl:if>
+ <xsl:if test="../@frame = 'top' or ../@frame = 'topbot'">
+ <xsl:text>border-top: outset 1px; </xsl:text>
+ </xsl:if>
+ <xsl:if test="../@frame = 'sides'">
+ <xsl:text>border-left: outset 1px; border-right: outset 1px; </xsl:text>
+ </xsl:if>
+ </xsl:variable>
+ <table>
+ <xsl:if test="../title">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="../title"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="../@pgwide = '1'">
+ <xsl:attribute name="width">100%</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="string($style) != ''">
+ <xsl:attribute name="style">
+ <xsl:value-of select="$style"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="thead">
+ <xsl:with-param name="colspecs" select="colspec"/>
+ <xsl:with-param name="spanspecs" select="spanspec"/>
+ <xsl:with-param name="colsep" select="@colsep = '1'"/>
+ <xsl:with-param name="rowsep" select="@rowsep = '1'"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="tbody">
+ <xsl:with-param name="colspecs" select="colspec"/>
+ <xsl:with-param name="spanspecs" select="spanspec"/>
+ <xsl:with-param name="colsep" select="@colsep = '1'"/>
+ <xsl:with-param name="rowsep" select="@rowsep = '1'"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="tfoot">
+ <xsl:with-param name="colspecs" select="colspec"/>
+ <xsl:with-param name="spanspecs" select="spanspec"/>
+ <xsl:with-param name="colsep" select="@colsep = '1'"/>
+ <xsl:with-param name="rowsep" select="@rowsep = '1'"/>
+ </xsl:apply-templates>
+ </table>
+</xsl:template>
+
+<xsl:template match="row">
+ <xsl:param name="colspecs"/>
+ <xsl:param name="spanspecs"/>
+ <xsl:param name="colsep" select="false()"/>
+ <xsl:param name="rowsep" select="false()"/>
+ <xsl:param name="spans"/>
+ <tr>
+ <xsl:if test="name(..) = 'tbody'">
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when
+ test="count(preceding-sibling::row) mod 2">odd</xsl:when>
+ <xsl:otherwise>even</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="*[1]">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colsep" select="$colsep"/>
+ <xsl:with-param name="rowsep" select="
+ (@rowsep = '1') or ((@rowsep != '0') and $rowsep)"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </tr>
+ <xsl:apply-templates select="following-sibling::row[1]">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colsep" select="$colsep"/>
+ <xsl:with-param name="rowsep" select="$rowsep"/>
+ <xsl:with-param name="spans">
+ <xsl:apply-templates select="*[1]" mode="span">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:apply-templates>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template mode="span" name="entry.span" match="entry | entrytbl">
+ <xsl:param name="colspecs"/>
+ <xsl:param name="spanspecs"/>
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="spans"/>
+ <xsl:variable name="entry.colnum">
+ <xsl:call-template name="entry.colnum">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="entry" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="entry.colspan">
+ <xsl:choose>
+ <xsl:when test="@spanname or @namest">
+ <xsl:call-template name="calculate.colspan">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="entry" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="following.spans">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colspan" select="$entry.colspan"/>
+ <xsl:with-param name="spans" select="$spans"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$spans != '' and not(starts-with($spans, '0:'))">
+ <xsl:value-of select="substring-before($spans, ':') - 1"/>
+ <xsl:text>:</xsl:text>
+ <xsl:call-template name="entry.span">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="col" select="$col + 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans, ':')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry.colnum &gt; $col">
+ <xsl:text>0:</xsl:text>
+ <xsl:call-template name="entry.span">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="col" select="$col + $entry.colspan"/>
+ <xsl:with-param name="spans" select="$following-spans"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="count" select="$entry.colspan"/>
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="@morerows">
+ <xsl:value-of select="@morerows"/>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>:</xsl:text>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:if test="following-sibling::*">
+ <xsl:apply-templates select="following-sibling::*[1]" mode="span">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="col" select="$col + $entry.colspan"/>
+ <xsl:with-param name="spans" select="$following.spans"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="entry.colnum">
+ <xsl:param name="colspecs"/>
+ <xsl:param name="spanspecs"/>
+ <xsl:param name="entry" select="."/>
+ <xsl:choose>
+ <xsl:when test="$entry/@spanname">
+ <xsl:variable name="spanspec"
+ select="$spanspecs[@spanname = $entry/@spanname]"/>
+ <xsl:variable name="colspec"
+ select="$colspecs[@colname = $spanspec/@namest]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry/@colname">
+ <xsl:variable name="colspec"
+ select="$colspecs[@colname = $entry/@colname]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$entry/@namest">
+ <xsl:variable name="colspec"
+ select="$colspecs[@colname = $entry/namest]"/>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colspec" select="$colspec"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="colspec.colnum">
+ <xsl:param name="colspecs"/>
+ <xsl:param name="spanspecs"/>
+ <xsl:param name="colspec" select="."/>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:when test="$colspec/preceding-sibling::colspec">
+ <xsl:variable name="prec.colspec.colnum">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colspec"
+ select="$colspec/preceding-sibling::colspec[1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$prec.colspec.colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>1</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calculate.colspan">
+ <xsl:param name="colspecs"/>
+ <xsl:param name="spanspecs"/>
+ <xsl:param name="entry" select="."/>
+ <xsl:variable name="namest">
+ <xsl:choose>
+ <xsl:when test="$entry/@spanname">
+ <xsl:value-of
+ select="$spanspecs[@spanname = $entry/@spanname]/@namest"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$entry/@namest"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="nameend">
+ <xsl:choose>
+ <xsl:when test="$entry/@spanname">
+ <xsl:value-of
+ select="$spanspecs[@spanname = $entry/@spanname]/@nameend"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$entry/@nameend"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="colnumst">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colspec" select="$colspecs[@colname = $namest]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="colnumend">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colspec" select="$colspecs[@colname = $nameend]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$namest = '' or $nameend = ''">1</xsl:when>
+ <xsl:when test="$colnumend &gt; $colnumst">
+ <xsl:value-of select="$colnumend - $colnumst + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnumst - $colnumend + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="calculate.following.spans">
+ <xsl:param name="colspecs"/>
+ <xsl:param name="spanspecs"/>
+ <xsl:param name="colspan" select="1"/>
+ <xsl:param name="spans" select="''"/>
+ <xsl:choose>
+ <xsl:when test="$colspan &gt; 0">
+ <xsl:call-template name="calculate.following.spans">
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="spanspecs" select="$spanspecs"/>
+ <xsl:with-param name="colspan" select="$colspan - 1"/>
+ <xsl:with-param name="spans" select="substring-after($spans, ':')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$spans"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-title.xsl b/stylesheets/db2html-title.xsl
new file mode 100644
index 00000000..defdd417
--- /dev/null
+++ b/stylesheets/db2html-title.xsl
@@ -0,0 +1,129 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY is-info "
+(name(.) = 'appendixinfo') or (name(.) = 'articleinfo') or
+(name(.) = 'bibliographyinfo') or (name(.) = 'blockinfo') or
+(name(.) = 'bookinfo') or (name(.) = 'chapterinfo') or
+(name(.) = 'glossaryinfo') or (name(.) = 'indexinfo') or
+(name(.) = 'objectinfo') or (name(.) = 'partinfo') or
+(name(.) = 'prefaceinfo') or (name(.) = 'refentryinfo') or
+(name(.) = 'referenceinfo') or (name(.) = 'refsect1info') or
+(name(.) = 'refsect2info') or (name(.) = 'refsect3info') or
+(name(.) = 'refsectioninfo') or (name(.) = 'refsynopsisdivinfo') or
+(name(.) = 'sect1info') or (name(.) = 'sect2info') or
+(name(.) = 'sect3info') or (name(.) = 'sect4info') or
+(name(.) = 'sect5info') or (name(.) = 'sectioninfo') or
+(name(.) = 'setinfo') or (name(.) = 'setindexinfo') or
+(name(.) = 'sidebarinfo') ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template mode="title.text.mode" match="*">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:value-of select="title"/>
+ </xsl:when>
+ <xsl:when test="(&is-info;) and ../title">
+ <xsl:value-of select="../title"/>
+ </xsl:when>
+ <xsl:when test="*[&is-info;]/title">
+ <xsl:value-of select="*[&is-info;]/title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="node.header.inline.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template mode="title.text.mode" match="refentry">
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:value-of select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:when test="refentryinfo/title">
+ <xsl:value-of select="refentryinfo/title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="node.header.inline.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template mode="titleabbrev.text.mode" match="*">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:value-of select="titleabbrev"/>
+ </xsl:when>
+ <xsl:when test="(&is-info;) and ../titleabbrev">
+ <xsl:value-of select="../titleabbrev"/>
+ </xsl:when>
+ <xsl:when test="*[&is-info;]/titleabbrev">
+ <xsl:value-of select="*[&is-info;]/titleabbrev"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.text.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template mode="title.inline.mode" match="*">
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title/node()"/>
+ </xsl:when>
+ <xsl:when test="(&is-info;) and ../title">
+ <xsl:apply-templates select="../title/node()"/>
+ </xsl:when>
+ <xsl:when test="*[&is-info;]/title">
+ <xsl:apply-templates select="*[&is-info;]/title/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="node.header.inline.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template mode="title.inline.mode" match="refentry">
+ <xsl:choose>
+ <xsl:when test="refmeta/refentrytitle">
+ <xsl:value-of select="refmeta/refentrytitle"/>
+ </xsl:when>
+ <xsl:when test="refentryinfo/title">
+ <xsl:value-of select="refentryinfo/title"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="node.header.inline.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template mode="titleabbrev.inline.mode" match="*">
+ <xsl:choose>
+ <xsl:when test="titleabbrev">
+ <xsl:apply-templates select="titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:when test="(&is-info;) and ../titleabbrev">
+ <xsl:apply-templates select="../titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:when test="*[&is-info;]/titleabbrev">
+ <xsl:apply-templates select="*[&is-info;]/titleabbrev/node()"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="." mode="title.inline.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-titlepage.xsl b/stylesheets/db2html-titlepage.xsl
new file mode 100644
index 00000000..d89b15b3
--- /dev/null
+++ b/stylesheets/db2html-titlepage.xsl
@@ -0,0 +1,402 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:template mode="content.mode" match="
+ appendixinfo | articleinfo | bibliographyinfo | bookinfo |
+ chapterinfo | glossaryinfo | indexinfo | partinfo |
+ prefaceinfo | refentryinfo | referenceinfo | refsect1info |
+ refsect2info | refsect3info | refsectioninfo | sect1info |
+ sect2info | sect3info | sect4info | sect5info |
+ sectioninfo | setinfo | setindexinfo ">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<xsl:template match="
+ appendixinfo | articleinfo | bibliographyinfo | bookinfo |
+ chapterinfo | glossaryinfo | indexinfo | partinfo |
+ prefaceinfo | refentryinfo | referenceinfo | refsect1info |
+ refsect2info | refsect3info | refsectioninfo | sect1info |
+ sect2info | sect3info | sect4info | sect5info |
+ sectioninfo | setinfo | setindexinfo ">
+
+ <xsl:variable name="authors"
+ select="author|authorgroup/author|corpauthor|authorgroup/corpauthor"/>
+ <xsl:variable name="editors" select="editor|authorgroup/editor"/>
+ <xsl:variable name="collabs" select="collab|authorgroup/collab"/>
+ <xsl:variable name="credits"
+ select="contrib|othercredit|authorgroup/othercredit"/>
+
+ <div class="titlepage">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="name" select="'titlepage'"/>
+ </xsl:call-template>
+ <xsl:if test="not(title) and ../title">
+ <xsl:apply-templates select="../title" mode="titlepage.mode"/>
+ </xsl:if>
+ <xsl:if test="not(subtitle) and ../subtitle">
+ <xsl:apply-templates select="../subtitle" mode="titlepage.mode"/>
+ </xsl:if>
+ <xsl:if test="$authors">
+ <div>
+ <h2 class="author">
+ <xsl:call-template name="ngettext">
+ <xsl:with-param name="key" select="'Author'"/>
+ <xsl:with-param name="num" select="count($authors)"/>
+ </xsl:call-template>
+ </h2>
+ <dl>
+ <xsl:apply-templates select="$authors" mode="titlepage.mode"/>
+ </dl>
+ </div>
+ </xsl:if>
+ <xsl:if test="$editors">
+ <div>
+ <h2 class="editor">
+ <xsl:call-template name="ngettext">
+ <xsl:with-param name="key" select="'Editor'"/>
+ <xsl:with-param name="num" select="count($editors)"/>
+ </xsl:call-template>
+ </h2>
+ <dl>
+ <xsl:apply-templates select="$editors" mode="titlepage.mode"/>
+ </dl>
+ </div>
+ </xsl:if>
+ <xsl:if test="$collabs">
+ <div>
+ <h2 class="collab">
+ <xsl:call-template name="ngettext">
+ <xsl:with-param name="key" select="'Collaborator'"/>
+ <xsl:with-param name="num" select="count($collabs)"/>
+ </xsl:call-template>
+ </h2>
+ <dl>
+ <xsl:apply-templates select="$collabs" mode="titlepage.mode"/>
+ </dl>
+ </div>
+ </xsl:if>
+ <xsl:if test="$credits">
+ <div>
+ <h2 class="othercredit">
+ <xsl:call-template name="ngettext">
+ <xsl:with-param name="key" select="'Other Contributor'"/>
+ <xsl:with-param name="num" select="count($credits)"/>
+ </xsl:call-template>
+ </h2>
+ <dl>
+ <xsl:apply-templates select="$credits" mode="titlepage.mode"/>
+ </dl>
+ </div>
+ </xsl:if>
+ <xsl:if test="publisher">
+ <div>
+ <h2 class="publisher">
+ <xsl:call-template name="ngettext">
+ <xsl:with-param name="key" select="'Publisher'"/>
+ <xsl:with-param name="num" select="count(publisher)"/>
+ </xsl:call-template>
+ </h2>
+ <dl>
+ <xsl:apply-templates select="publisher" mode="titlepage.mode"/>
+ </dl>
+ </div>
+ </xsl:if>
+ <xsl:if test="copyright">
+ <div>
+ <h2 class="copyright">
+ <xsl:call-template name="ngettext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ <xsl:with-param name="num" select="count(copyright)"/>
+ </xsl:call-template>
+ </h2>
+ <dl>
+ <xsl:apply-templates select="copyright" mode="titlepage.mode"/>
+ </dl>
+ </div>
+ </xsl:if>
+ <xsl:apply-templates select="legalnotice" mode="titlepage.mode"/>
+ <xsl:apply-templates select="revhistory" mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="*" mode="titlepage.mode">
+ <xsl:apply-templates select="."/>
+</xsl:template>
+
+<!--
+<xsl:template match="abstract" mode="titlepage.mode">
+ <div class="{name(.)}">
+ <xsl:call-template name="formal.object.heading">
+ <xsl:with-param name="title">
+ <xsl:apply-templates select="." mode="title.markup"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </div>
+</xsl:template>
+
+<xsl:template match="abstract/title" mode="titlepage.mode">
+</xsl:template>
+-->
+
+<xsl:template match="authorinitials" mode="titlepage.mode">
+ <span class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="author" mode="titlepage.mode">
+ <dt><xsl:call-template name="person.name"/></dt>
+ <xsl:for-each select="affiliation/orgname">
+ <dd>
+ <strong>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Affiliation'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ </strong>
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ </dd>
+ </xsl:for-each>
+ <xsl:for-each select="email">
+ <dd>
+ <strong>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Email'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ </strong>
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ </dd>
+ </xsl:for-each>
+ <xsl:apply-templates select="authorblurb | personblurb"/>
+</xsl:template>
+
+<xsl:template match="authorblurb" mode="titlepage.mode">
+ <dd><xsl:apply-templates mode="titlepage.mode"/></dd>
+</xsl:template>
+
+<xsl:template match="collab" mode="titlepage.mode">
+ <dt>
+ <xsl:apply-templates select="collabname" mode="titlepage.mode"/>
+ </dt>
+ <xsl:for-each select="affiliation/orgname">
+ <dd>
+ <strong>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Affiliation'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ </strong>
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ </dd>
+ </xsl:for-each>
+</xsl:template>
+
+<xsl:template match="collabname" mode="titlepage.mode">
+ <span class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="contrib" mode="titlepage.mode">
+ <dt><xsl:apply-templates mode="titlepage.mode"/></dt>
+</xsl:template>
+
+<xsl:template match="copyright" mode="titlepage.mode">
+ <dt>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:text>&#160;&#169;&#160;</xsl:text>
+ <xsl:for-each select="year">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+ <xsl:for-each select="holder">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="."/>
+ </xsl:for-each>
+ </dt>
+</xsl:template>
+
+<xsl:template match="corpauthor" mode="titlepage.mode">
+ <dt><xsl:apply-templates mode="titlepage.mode"/></dt>
+</xsl:template>
+
+<xsl:template match="editor" mode="titlepage.mode">
+ <dt><xsl:call-template name="person.name"/></dt>
+ <xsl:for-each select="email">
+ <dd>
+ <strong>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Email'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ </strong>
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ </dd>
+ </xsl:for-each>
+ <xsl:apply-templates select="personblurb"/>
+</xsl:template>
+
+<xsl:template match="holder" mode="titlepage.mode">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="legalnotice" mode="titlepage.mode">
+ <div class="{name(.)}">
+ <xsl:call-template name="anchor"/>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:apply-templates select="title" mode="titlepage.mode"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <h2 class="{name(.)}">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Legal Notice'"/>
+ </xsl:call-template>
+ </h2>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:apply-templates mode="titlepage.mode" select="
+ beginpage | blockquote | calloutlist | caution |
+ formalpara | glosslist | important | indexterm |
+ itemizedlist | literallayout | note | orderedlist |
+ para | programlisting | programlistingco | screen |
+ screenco | screenshot | segmentedlist | simpara |
+ simplelist | tip | variablelist | warning "/>
+ </div>
+</xsl:template>
+
+<xsl:template match="legalnotice/title" mode="titlepage.mode">
+ <h2 class="legalnotice">
+ <xsl:apply-templates/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="othercredit" mode="titlepage.mode">
+ <dt><xsl:call-template name="person.name"/></dt>
+ <dt><xsl:call-template name="person.name"/></dt>
+ <xsl:for-each select="email">
+ <dd>
+ <strong>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Email'"/>
+ </xsl:call-template>
+ <xsl:text>: </xsl:text>
+ </strong>
+ <xsl:apply-templates select="." mode="titlepage.mode"/>
+ </dd>
+ </xsl:for-each>
+ <xsl:apply-templates select="personblurb"/>
+</xsl:template>
+
+<xsl:template match="personblurb" mode="titlepage.mode">
+ <dd><xsl:apply-templates mode="titlepage.mode"/></dd>
+</xsl:template>
+
+<xsl:template match="publisher" mode="titlepage.mode">
+ <dt><xsl:apply-templates mode="titlepage.mode"/></dt>
+</xsl:template>
+
+<xsl:template match="publishername" mode="titlepage.mode">
+ <span class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="revhistory" mode="titlepage.mode">
+ <div class="{name(.)}">
+ <h2 class="{name(.)}">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Revision History'"/>
+ </xsl:call-template>
+ </h2>
+ <table class="{name(.)}">
+ <xsl:attribute name="summary">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Revision History'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <thead><tr>
+ <th>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Title'"/>
+ </xsl:call-template>
+ </th>
+ <th>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Date'"/>
+ </xsl:call-template>
+ </th>
+ <th>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Author'"/>
+ </xsl:call-template>
+ </th>
+ <th>
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Publisher'"/>
+ </xsl:call-template>
+ </th>
+ </tr></thead>
+ <tbody>
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </tbody>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template match="revision" mode="titlepage.mode">
+ <tr>
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="count(preceding-sibling::revision) mod 2">
+ <xsl:text>odd</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>even</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <td><xsl:apply-templates mode="titlepage.mode" select="revnumber"/></td>
+ <td><xsl:apply-templates mode="titlepage.mode" select="date"/></td>
+ <td><xsl:apply-templates mode="titlepage.mode" select="
+ revremark/para[@role='author'] |
+ revdescription/para[@role='author'] |
+ authorinitials "/></td>
+ <td><xsl:apply-templates mode="titlepage.mode" select="
+ revremark/para[@role='publisher'] |
+ revdescription/para[@role='publisher'] "/></td>
+ </tr>
+</xsl:template>
+
+<xsl:template match="revnumber" mode="titlepage.mode">
+ <span class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </span>
+</xsl:template>
+
+<xsl:template match="subtitle" mode="titlepage.mode">
+ <h2 class="{name(.)}">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h2>
+</xsl:template>
+
+<xsl:template match="title" mode="titlepage.mode">
+ <h1 class="titlepage">
+ <xsl:apply-templates mode="titlepage.mode"/>
+ </h1>
+</xsl:template>
+
+<xsl:template match="year" mode="titlepage.mode">
+ <xsl:apply-templates mode="titlepage.mode"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-tmp.xsl b/stylesheets/db2html-tmp.xsl
new file mode 100644
index 00000000..9c62a066
--- /dev/null
+++ b/stylesheets/db2html-tmp.xsl
@@ -0,0 +1,5 @@
+<?xml version='1.0'?><!-- -*- Mode: xml -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-toc.xsl b/stylesheets/db2html-toc.xsl
new file mode 100644
index 00000000..f726096e
--- /dev/null
+++ b/stylesheets/db2html-toc.xsl
@@ -0,0 +1,112 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY is-division "
+ (name(.) = 'appendix') or (name(.) = 'article') or
+ (name(.) = 'book') or (name(.) = 'bibliography') or
+ (name(.) = 'chapter') or (name(.) = 'colophon') or
+ (name(.) = 'glossary') or (name(.) = 'index') or
+ (name(.) = 'part') or (name(.) = 'preface') or
+ (name(.) = 'reference') or (name(.) = 'refentry') or
+ (name(.) = 'refsect1') or (name(.) = 'refsect2') or
+ (name(.) = 'refsect3') or (name(.) = 'refsection') or
+ (name(.) = 'sect1') or (name(.) = 'sect2') or
+ (name(.) = 'sect3') or (name(.) = 'sect4') or
+ (name(.) = 'sect5') or (name(.) = 'section') or
+ (name(.) = 'set') or (name(.) = 'setindex') or
+ (name(.) = 'simplesect') ">
+<!ENTITY is-info "
+ (name(.) = 'appendixinfo') or (name(.) = 'articleinfo') or
+ (name(.) = 'bibliographyinfo') or (name(.) = 'bookinfo') or
+ (name(.) = 'chapterinfo') or (name(.) = 'glossaryinfo') or
+ (name(.) = 'indexinfo') or (name(.) = 'partinfo') or
+ (name(.) = 'prefaceinfo') or (name(.) = 'refentryinfo') or
+ (name(.) = 'referenceinfo') or (name(.) = 'refsect1info') or
+ (name(.) = 'refsect2info') or (name(.) = 'refsect3info') or
+ (name(.) = 'refsectioninfo') or (name(.) = 'sect1info') or
+ (name(.) = 'sect2info') or (name(.) = 'sect3info') or
+ (name(.) = 'sect4info') or (name(.) = 'sect5info') or
+ (name(.) = 'sectioninfo') or (name(.) = 'setinfo') or
+ (name(.) = 'setindexinfo') ">
+]>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template name="toc">
+ <xsl:call-template name="toc.verbose"/>
+</xsl:template>
+
+<!-- ======================================================================= -->
+<!--
+<xsl:template name="toc.simple">
+ <xsl:param name="node" select="."/>
+ <div class="toc">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="name" select="'toc'"/>
+ </xsl:call-template>
+
+ <xsl:if test="$generate_titlepage and /*/*[&is-info;]">
+ <p class="about">
+ <xsl:call-template name="xref">
+ <xsl:with-param name="linkend" select="'titlepage'"/>
+ </xsl:call-template>
+ </p>
+ </xsl:if>
+ <xsl:call-template name="node.heading">
+ <xsl:with-param name="content">
+ <xsl:call-template name="gettext">
+ <xsl:with-param name="key" select="'Table of Contents'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ <ol>
+ <li value="1.1">Foo</li>
+ <li value="12.2">Bar</li>
+ </ol>
+ </div>
+</xsl:template>
+-->
+
+<!-- ======================================================================= -->
+
+<xsl:template name="toc.verbose">
+ <div class="toc"><ul>
+ <xsl:for-each select="*[&is-division;]">
+ <xsl:variable name="chunk_id">
+ <xsl:apply-templates select="." mode="chunk.id.mode"/>
+ </xsl:variable>
+ <xsl:if test="string($chunk_id) = @id">
+ <xsl:apply-templates select="." mode="toc.verbose.mode"/>
+ </xsl:if>
+ </xsl:for-each>
+ </ul></div>
+</xsl:template>
+
+<xsl:template match="*" mode="toc.verbose.mode">
+ <li>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="xref.target">
+ <xsl:with-param name="linkend" select="@id"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:apply-templates select="." mode="node.header.inline.mode"/>
+ </a>
+ <xsl:choose>
+ <xsl:when test="title">
+ <xsl:text>&#160;</xsl:text>
+ <b><xsl:apply-templates select="title/node()"/></b>
+ </xsl:when>
+ <xsl:when test="*[&is-info;]/title">
+ <xsl:text>&#160;</xsl:text>
+ <b><xsl:apply-templates select="*[&is-info;]/title/node()"/></b>
+ </xsl:when>
+ </xsl:choose>
+ </li>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html-xref.xsl b/stylesheets/db2html-xref.xsl
new file mode 100644
index 00000000..2f7cac97
--- /dev/null
+++ b/stylesheets/db2html-xref.xsl
@@ -0,0 +1,112 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- ======================================================================= -->
+
+<xsl:template name="anchor" match="anchor">
+ <xsl:param name="name" select="@id"/>
+ <xsl:if test="$name">
+ <a name="{$name}"/>
+ </xsl:if>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template match="link">
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="xref.target">
+ <xsl:with-param name="linkend" select="@linkend"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="@endterm">
+ <xsl:apply-templates select="id(@endterm)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template match="olink">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template name="ulink" match="ulink">
+ <xsl:param name="url" select="@url"/>
+ <xsl:param name="content" select="false()"/>
+ <a href="{$url}">
+ <xsl:choose>
+ <xsl:when test="$content">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+<xsl:template name="xref" match="xref">
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="target" select="id($linkend)"/>
+ <xsl:param name="content" select="false()"/>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="xref.target">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="$content">
+ <xsl:copy-of select="$content"/>
+ </xsl:when>
+ <xsl:when test="@endterm">
+ <xsl:apply-templates select="id(@endterm)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="xref.content">
+ <xsl:with-param name="linkend" select="$linkend"/>
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+</xsl:template>
+
+<xsl:template name="xref.target">
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="target" select="id($linkend)"/>
+ <xsl:variable name="chunk_id">
+ <xsl:apply-templates select="$target" mode="chunk.id.mode"/>
+ </xsl:variable>
+ <xsl:value-of select="concat($chunk_id, $html_extension)"/>
+ <xsl:if test="string($chunk_id) != $linkend">
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="$linkend"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="xref.content">
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="target" select="id($linkend)"/>
+ <xsl:choose>
+ <xsl:when test="$target/@xreflabel">
+ <xsl:value-of select="$target/@xreflabel"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$target" mode="node.header.inline.mode"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- ======================================================================= -->
+
+</xsl:stylesheet>
diff --git a/stylesheets/db2html.xsl b/stylesheets/db2html.xsl
new file mode 100644
index 00000000..15d3ab8b
--- /dev/null
+++ b/stylesheets/db2html.xsl
@@ -0,0 +1,52 @@
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:include href="db2html-param.xsl"/>
+
+<xsl:include href="gettext.xsl"/>
+
+<xsl:include href="db2html-common.xsl"/>
+<xsl:include href="db2html-node.xsl"/>
+<xsl:include href="db2html-title.xsl"/>
+
+<xsl:include href="db2html-chunk.xsl"/>
+<xsl:include href="db2html-html.xsl"/>
+<xsl:include href="db2html-navbar.xsl"/>
+
+<xsl:include href="db2html-suppressed.xsl"/>
+
+<xsl:include href="db2html-division.xsl"/>
+<xsl:include href="db2html-titlepage.xsl"/>
+
+<xsl:include href="db2html-admon.xsl"/>
+<xsl:include href="db2html-biblio.xsl"/>
+<xsl:include href="db2html-block.xsl"/>
+<xsl:include href="db2html-callout.xsl"/>
+<xsl:include href="db2html-glossary.xsl"/>
+<xsl:include href="db2html-index.xsl"/>
+<xsl:include href="db2html-inline.xsl"/>
+<xsl:include href="db2html-list.xsl"/>
+<xsl:include href="db2html-media.xsl"/>
+<xsl:include href="db2html-refentry.xsl"/>
+<xsl:include href="db2html-table.xsl"/>
+<xsl:include href="db2html-toc.xsl"/>
+<xsl:include href="db2html-xref.xsl"/>
+
+<xsl:template match="/">
+ <xsl:apply-templates select="book | article" mode="chunk.mode"/>
+</xsl:template>
+
+<xsl:template match="*">
+ <xsl:call-template name="FIXME"/>
+</xsl:template>
+
+<xsl:template name="FIXME">
+ <span class="{name(.)}">
+ <span class="FIXME" style="color: red">
+ <xsl:apply-templates/>
+ </span>
+ </span>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/stylesheets/docbook/Makefile.am b/stylesheets/docbook/Makefile.am
index bbc2fc7b..6df42060 100644
--- a/stylesheets/docbook/Makefile.am
+++ b/stylesheets/docbook/Makefile.am
@@ -1,42 +1,17 @@
SUBDIRS=dtd
-DIRECTORIES= \
- common \
- html \
- images \
- lib
-
DOCBOOK_DIR=$(datadir)/sgml/docbook/yelp/docbook
-install-data-local:
- $(mkinstalldirs) $(DESTDIR)$(DOCBOOK_DIR); \
- echo '-- Installing VERSION'; \
- $(INSTALL_DATA) VERSION $(DESTDIR)$(DOCBOOK_DIR); \
- echo '-- Installing catalog'; \
- $(mkinstalldirs) $(DESTDIR)$(datadir)/yelp;
- $(INSTALL_DATA) catalog $(DESTDIR)$(datadir)/yelp; \
- for DIR in $(DIRECTORIES); do \
- echo '-- Installing '$$DIR; \
- $(mkinstalldirs) $(DESTDIR)$(DOCBOOK_DIR)/$$DIR; \
- (installfiles=`find $(srcdir)/$$DIR -name "*.xml" -o -name "*.xsl" -o -name "*.dtd" -o -name "*.png"`; \
- for i in $$installfiles; do \
- echo '-- Installing '$$i; \
- $(INSTALL_DATA) $$i $(DESTDIR)$(DOCBOOK_DIR)/$$DIR; \
- done) \
- done
-
+install-data-local:
+ $(mkinstalldirs) $(DESTDIR)$(DOCBOOK_DIR); \
+ echo '-- Installing VERSION'; \
+ $(INSTALL_DATA) VERSION $(DESTDIR)$(DOCBOOK_DIR); \
+ echo '-- Installing catalog'; \
+ $(mkinstalldirs) $(DESTDIR)$(datadir)/yelp; \
+ $(INSTALL_DATA) catalog $(DESTDIR)$(datadir)/yelp;
dist-hook:
- echo '-- Disting VERSION'; \
- cp VERSION $(distdir); \
- echo '-- Disting catalog.in'; \
- cp catalog.in $(distdir); \
- for DIR in $(DIRECTORIES); do \
- echo '-- Disting '$$DIR; \
- mkdir $(distdir)/$$DIR; \
- (installfiles=`find $(srcdir)/$$DIR -name "*.xml" -o -name "*.xsl" -o -name "*.dtd" -o -name "*.png"`; \
- for i in $$installfiles; do \
- echo '-- Disting '$$i; \
- cp $$i $(distdir)/$$DIR; \
- done) \
- done
+ echo '-- Disting VERSION'; \
+ cp VERSION $(distdir); \
+ echo '-- Disting catalog.in'; \
+ cp catalog.in $(distdir);
diff --git a/stylesheets/yelp-customization.xsl b/stylesheets/yelp-customization.xsl
index 15ba98bb..edcedfca 100644
--- a/stylesheets/yelp-customization.xsl
+++ b/stylesheets/yelp-customization.xsl
@@ -1,707 +1,145 @@
-<?xml version='1.0'?>
+<?xml version='1.0'?><!-- -*- Mode: fundamental; tab-width: 3 -*- -->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY is-division "
+ (name(.) = 'appendix') or (name(.) = 'article') or
+ (name(.) = 'book') or (name(.) = 'bibliography') or
+ (name(.) = 'chapter') or (name(.) = 'colophon') or
+ (name(.) = 'glossary') or (name(.) = 'index') or
+ (name(.) = 'part') or (name(.) = 'preface') or
+ (name(.) = 'reference') or (name(.) = 'refentry') or
+ (name(.) = 'refsect1') or (name(.) = 'refsect2') or
+ (name(.) = 'refsect3') or (name(.) = 'refsection') or
+ (name(.) = 'sect1') or (name(.) = 'sect2') or
+ (name(.) = 'sect3') or (name(.) = 'sect4') or
+ (name(.) = 'sect5') or (name(.) = 'section') or
+ (name(.) = 'set') or (name(.) = 'setindex') or
+ (name(.) = 'simplesect') ">
+]>
+
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:func="http://exslt.org/functions"
- xmlns:exsl="http://exslt.org/common"
- xmlns:yelp="http://www.gnome.org/"
- extension-element-prefixes="func exsl"
version='1.0'>
-<xsl:import href="http://docbook.sourceforge.net/release/xsl/1.48/html/docbook.xsl"/>
-<xsl:include href="yelp-custom.xsl"/>
-<xsl:include href="yelp-functions.xsl"/>
-
-<xsl:param name="yelp_docname"/>
-<xsl:param name="yelp_pathname"/>
-<xsl:param name="yelp_stylesheet_path" select="'No Stylesheet'" />
-
-<xsl:param name="yelp_max_chunk_depth" select="2" />
-<xsl:param name="yelp_generate_navbar" select="true()"/>
-<!-- either 'yelp' or 'exslt' -->
-<xsl:param name="yelp_chunk_method" select="'exslt'"/>
-
-<xsl:output encoding="ISO-8859-1" />
-
-<!-- Specifies the default path for admonition graphics -->
-<xsl:param name="admon.graphics.path">
- <xsl:choose>
- <xsl:when test="$yelp_chunk_method = 'yelp'">
- <xsl:text>file://</xsl:text>
- <xsl:value-of select="$yelp_stylesheet_path"/>
- <xsl:text>/images/</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>./stylesheet/</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:param>
-
-<xsl:param name="table.borders.with.css" select="1"/>
-
-<!-- direct parametrisation -->
-<xsl:param name="admon.style"><xsl:text>margin-left: 0</xsl:text></xsl:param>
-
-<xsl:template name="process.image">
- <!-- When this template is called, the current node should be -->
- <!-- a graphic, inlinegraphic, imagedata, or videodata. All -->
- <!-- those elements have the same set of attributes, so we can -->
- <!-- handle them all in one place. -->
- <xsl:param name="tag" select="'img'"/>
- <xsl:param name="alt"/>
-
- <xsl:variable name="filename">
- <xsl:choose>
- <xsl:when test="local-name(.) = 'graphic'
- or local-name(.) = 'inlinegraphic'">
- <xsl:choose>
- <xsl:when test="@fileref">
- <xsl:value-of select="@fileref"/>
- </xsl:when>
- <xsl:when test="@entityref">
- <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>
- <xsl:text>A fileref or entityref is required on </xsl:text>
- <xsl:value-of select="local-name(.)"/>
- </xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <!-- imagedata, videodata, audiodata -->
- <xsl:call-template name="mediaobject.filename">
- <xsl:with-param name="object" select=".."/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="width">
- <xsl:choose>
- <xsl:when test="@scale"><xsl:value-of select="@scale"/>%</xsl:when>
- <xsl:when test="@width"><xsl:value-of select="@width"/></xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="height">
- <xsl:choose>
- <xsl:when test="@scale"></xsl:when>
- <xsl:when test="@depth"><xsl:value-of select="@depth"/></xsl:when>
- <xsl:otherwise></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="align">
- <xsl:value-of select="@align"/>
- </xsl:variable>
-
- <xsl:element name="{$tag}">
- <xsl:attribute name="src">
- <xsl:choose>
- <xsl:when test="$yelp_chunk_method = 'yelp'">
- <xsl:text>file://</xsl:text>
- <xsl:value-of select="$yelp_pathname"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$filename"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$filename"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
-
- <xsl:if test="$align != ''">
- <xsl:attribute name="align">
- <xsl:value-of select="$align"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$height != ''">
- <xsl:attribute name="height">
- <xsl:value-of select="$height"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$width != ''">
- <xsl:attribute name="width">
- <xsl:value-of select="$width"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$alt != ''">
- <xsl:attribute name="alt">
- <xsl:value-of select="$alt"/>
- </xsl:attribute>
- </xsl:if>
- </xsl:element>
-</xsl:template>
-
-<xsl:template name="href.target">
- <xsl:param name="object" select="."/>
- <xsl:variable name="chunk" select="$object/ancestor-or-self::*
- [yelp:is-division(.)]
- [yelp:get-depth(.) &lt;= $yelp_max_chunk_depth]
- [1]"/>
-
- <xsl:choose>
- <xsl:when test="$yelp_chunk_method = 'yelp'">
- <xsl:text>ghelp:</xsl:text>
- <xsl:value-of select="$yelp_docname"/>
- <xsl:text>?</xsl:text>
- <xsl:value-of select="$chunk/@id"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$chunk/@id"/>
- <xsl:text>.html</xsl:text>
- <xsl:if test="$chunk != $object">
- <xsl:text>#</xsl:text>
- <xsl:value-of select="$object/@id"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- make a small custom css stylesheet reside in <head>...</head> -->
-
-<xsl:template name="user.head.content">
- <style>
- <xsl:text>
- B {font-weight: bold}
- LI {margin-bottom: 0.66em;}
- UL LI {margin-left: 1em}
- OL LI {margin-left: 1.5em}
- LI P {margin-bottom: 0}
- LI P {margin-top: 0}
- P.header-title {text-align: center; margin-top: 0; margin-bottom: 0}
- P.copyright {margin-bottom: 0; margin-top: 0}
- H2 + P.copyright {margin-top: 1em}
- DIV.legalnotice P {font-size: 0.8em}
- DIV.revhistory TR {vertical-align: top}
- TT {font-family: monospace}
- P.about {margin-bottom: 0}
- DD P {margin-top: 0}
- DD P {margin-bottom: 0}
- OL {margin-top: 0; margin-bottom: 0}
- LI OL {margin-left: 2em; margin-top: 0.66em}
- UL {margin-top: 0; margin-bottom: 0}
- LI UL {margin-left: 2em; margin-top: 0.66em}
- OL LI UL {list-style-type: disc}
- UL LI UL {list-style-type: circle}
- OL LI OL {list-style-type: lower-alpha}
- DD {margin-left: 2em}
- DL {margin-top: 0}
- DL {margin-bottom: 0}
- DIV.variablelist DT {margin-top: 1em }
- DIV.variablelist DD P {margin-top: 0.5em}
- DIV.variablelist DD UL {margin-top: 0.5em}
- DIV.variablelist DD LI P {margin-top: 0}
- HR.bottom {margin-top: 2ex; margin-bottom: 0}
- TD {vertical-align: top}
- TH {vertical-align: top}
- DIV.table P {margin-top: 0}
- TABLE P {margin-bottom: 0; margin-top: 0}
- TABLE UL {margin-top: 0.66em;}
- DIV.toc {margin-bottom: 3ex}
- DIV TD {padding-right: 1em; padding-left: 1em; padding-top: 0.5ex; padding-bottom: 0.5ex}
- DIV TH {padding-right: 1em; padding-left: 1em; padding-top: 0.5ex; padding-bottom: 0.5ex}
- DIV.note TD {padding-left: 0; padding-top: 0}
- DIV.note TH {padding-left: 0; padding-top: 0}
- DIV.informaltable TABLE {border-bottom: solid 1px black}
- DIV.informaltable TR:FIRST-CHILD {border-top: solid 1px black}
- DIV.table > TABLE > * > TR:FIRST-CHILD {border-top: solid 1px black}
- DIV.table > TABLE {border-bottom: solid 1px black}
- DIV.revhistory TABLE {border-spacing: 0}
- LI DIV.informaltable {margin-top: 1em; margin-bottom: 1em}
- LI DIV.figure P {margin-top: 1em; margin-bottom: 1em}
- DIV.figure {margin-bottom: 4em}
- H1 {font-size: 1.4em}
- H2 {font-size: 1.3em; margin-bottom: 0}
- H3 {font-size: 1.2em; margin-bottom: 0}
- H4 {font-size: 1.1em; margin-bottom: 0}
- </xsl:text>
- </style>
-</xsl:template>
-
-<!-- take over the control of the body tag attributes -->
-<xsl:template name="body.attributes">
-<!--
- <xsl:attribute name="link">#0000FF</xsl:attribute>
- <xsl:attribute name="vlink">#840084</xsl:attribute>
- <xsl:attribute name="alink">#0000FF</xsl:attribute>
--->
-</xsl:template>
-
-<!-- change some formating choices -->
-
-<xsl:template match="guibutton">
- <xsl:call-template name="inline.boldseq"/>
-</xsl:template>
-
-<xsl:template match="command">
- <xsl:call-template name="inline.monoseq"/>
-</xsl:template>
-
-<xsl:template match="inlinemediaobject">
- <span class="{name(.)}">
- <xsl:if test="@id">
- <a name="{@id}"/>
- </xsl:if>
- <xsl:call-template name="select.mediaobject"/>
- </span>
-<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
-</xsl:template>
-
-<!-- ======================================================================= -->
-
-<xsl:template name="yelp.toc.ref">
- <xsl:choose>
- <xsl:when test="$yelp_chunk_method = 'yelp'">
- <xsl:text>ghelp:</xsl:text>
- <xsl:value-of select="$yelp_docname"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>index.html</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="yelp.titlepage.ref">
- <xsl:choose>
- <xsl:when test="$yelp_chunk_method = 'yelp'">
- <xsl:text>ghelp:</xsl:text>
- <xsl:value-of select="$yelp_docname"/>
- <xsl:text>?title-page</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>titlepage.html</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!-- ======================================================================= -->
-
-<xsl:template name="yelp.navbar.cell">
- <xsl:param name="target" select="."/>
- <xsl:param name="show.title" select="false()"/>
- <xsl:param name="position" select="'left'"/>
- <xsl:param name="use.title" select="false()"/>
-
- <td width="40%">
- <xsl:attribute name="align">
- <xsl:value-of select="$position"/>
- </xsl:attribute>
- <xsl:if test="$target">
- <a>
- <xsl:attribute name="accesskey">
- <xsl:choose>
- <xsl:when test="$position = 'left'"><xsl:text>p</xsl:text></xsl:when>
- <xsl:when test="$position = 'right'"><xsl:text>n</xsl:text></xsl:when>
- </xsl:choose>
- </xsl:attribute>
- <xsl:attribute name="href">
- <xsl:choose>
- <xsl:when test="$target = 'title-page'">
- <xsl:call-template name="yelp.titlepage.ref"/>
- </xsl:when>
- <xsl:when test="$target = 'toc'">
- <xsl:call-template name="yelp.toc.ref"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="href.target">
- <xsl:with-param name="object" select="$target"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <xsl:choose>
- <xsl:when test="$position = 'left'">
- <xsl:call-template name="gentext">
- <xsl:with-param name="key" select="'Previous'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$position = 'right'">
- <xsl:call-template name="gentext">
- <xsl:with-param name="key" select="'Next'"/>
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- </a>
- <xsl:if test="$use.title">
- <br/>
- <xsl:choose>
- <xsl:when test="$target = 'title-page'">
- <xsl:call-template name="gentext.template">
- <xsl:with-param name="context" select="'title'"/>
- <xsl:with-param name="name" select="'bookinfo'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$target = 'toc'">
- <xsl:call-template name="gentext">
- <xsl:with-param name="key" select="'Contents'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="yelp:get-title-text($target)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:if>
- </td>
-</xsl:template>
-
-<xsl:template name="yelp.navbar">
- <xsl:param name="node" select="."/>
- <xsl:param name="prev" select="yelp:get-prev($node)"/>
- <xsl:param name="next" select="yelp:get-next($node)"/>
- <xsl:param name="up" select="false()"/>
- <xsl:param name="use.title" select="false()"/>
-
- <xsl:if test="$yelp_generate_navbar">
- <table width="100%"><tr>
- <xsl:call-template name="yelp.navbar.cell">
- <xsl:with-param name="target" select="$prev"/>
- <xsl:with-param name="use.title" select="$use.title"/>
- <xsl:with-param name="position" select="'left'"/>
- </xsl:call-template>
- <xsl:if test="$up">
- <td align="center" width="20%"><a accesskey="u">
- <xsl:attribute name="href">
- <xsl:call-template name="yelp.toc.ref"/>
- </xsl:attribute>
- <xsl:call-template name="gentext">
- <xsl:with-param name="key" select="'Contents'"/>
+<xsl:include href="db2html.xsl"/>
+
+<xsl:template match="/">
+ <xsl:variable name="node" select="*"/>
+ <html>
+ <head>
+ <title>
+ <xsl:apply-templates select="$node" mode="title.text.mode"/>
+ </title>
+ <style type="text/css">
+ <xsl:call-template name="html.css">
+ <xsl:with-param name="node" select="$node"/>
</xsl:call-template>
- </a></td>
- </xsl:if>
- <xsl:call-template name="yelp.navbar.cell">
- <xsl:with-param name="target" select="$next"/>
- <xsl:with-param name="use.title" select="$use.title"/>
- <xsl:with-param name="position" select="'right'"/>
- </xsl:call-template>
- </tr></table>
- </xsl:if>
-</xsl:template>
+ </style>
+ <xsl:call-template name="html.head">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </head>
+ <body>
+ <xsl:call-template name="html.body.attributes">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ <xsl:call-template name="html.body.top">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
-<xsl:template name="yelp.navbar.top">
- <xsl:param name="node" select="."/>
- <xsl:param name="prev" select="yelp:get-prev($node)"/>
- <xsl:param name="next" select="yelp:get-next($node)"/>
- <xsl:param name="up" select="false()"/>
+ <xsl:comment> End of header </xsl:comment>
+ <xsl:apply-templates select="book | article" mode="chunk.mode"/>
+ <xsl:comment> Start of footer </xsl:comment>
- <xsl:if test="$yelp_generate_navbar">
- <xsl:call-template name="yelp.navbar">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="use.title" select="false()"/>
- </xsl:call-template>
- <hr/>
- </xsl:if>
+ <xsl:call-template name="html.body.bottom">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </body>
+ </html>
</xsl:template>
-<xsl:template name="yelp.navbar.bottom">
+<xsl:template name="chunk">
<xsl:param name="node" select="."/>
- <xsl:param name="prev" select="yelp:get-prev($node)"/>
- <xsl:param name="next" select="yelp:get-next($node)"/>
- <xsl:param name="up" select="true()"/>
+ <xsl:param name="info" select="false()"/>
+ <xsl:param name="divisions" select="false()"/>
+ <xsl:param name="id">
+ <xsl:choose>
+ <xsl:when test="$node = /*">
+ <xsl:text>toc</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$node/@id"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
- <xsl:if test="$yelp_generate_navbar">
- <hr class="bottom"/>
- <xsl:call-template name="yelp.navbar">
+ <xsl:comment> Start of chunk: [<xsl:value-of select="$id"/>] </xsl:comment>
+ <xsl:call-template name="html">
<xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="up" select="$up"/>
- <xsl:with-param name="use.title" select="true()"/>
+ <xsl:with-param name="leaf" select="
+ count($node/ancestor::*[&is-division;]) &gt;= $chunk_depth"/>
</xsl:call-template>
- </xsl:if>
-</xsl:template>
-
-<!-- ======================================================================= -->
-
-<xsl:template name="yelp.title">
- <xsl:choose>
- <xsl:when test="yelp:get-title(.)">
- <xsl:apply-templates select="yelp:get-title(.)" mode="titlepage.mode"/>
- </xsl:when>
- <xsl:when test="yelp:get-title-text(.)">
- <h2 class="title">
- <a><xsl:attribute name="name">
- <xsl:call-template name="href.target"/>
- </xsl:attribute></a>
- <xsl:value-of select="yelp:get-title-text(.)"/>
- </h2>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="yelp.chunk">
- <xsl:param name="node" select="."/>
- <xsl:param name="id" select="$node/@id"/>
- <xsl:param name="content">
- <xsl:apply-templates select="$node"/>
- </xsl:param>
-
- <xsl:choose>
- <xsl:when test="$yelp_chunk_method = 'yelp'">
- <xsl:comment> Start of chunk: [<xsl:value-of select="$id"/>] </xsl:comment>
- <xsl:copy-of select="$content"/>
- <xsl:comment> End of chunk </xsl:comment>
- </xsl:when>
- <xsl:when test="$yelp_chunk_method = 'exslt'">
- <xsl:variable name="filename">
- <xsl:choose>
- <xsl:when test="$id = 'title-page'">
- <xsl:call-template name="yelp.titlepage.ref"/>
- </xsl:when>
- <xsl:when test="$id = 'toc'">
- <xsl:call-template name="yelp.toc.ref"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$id"/>
- <xsl:text>.html</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <exsl:document href="{$filename}">
- <html>
- <head>
- <xsl:call-template name="head.content">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- <xsl:call-template name="user.head.content">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- </head>
- <body>
- <xsl:call-template name="body.attributes"/>
- <xsl:call-template name="user.header.content">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- <xsl:copy-of select="$content"/>
- <xsl:call-template name="user.footer.content">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- </body>
- </html>
- </exsl:document>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
+ <xsl:comment> End of chunk </xsl:comment>
-<xsl:template name="yelp.titlepage.chunk">
- <xsl:variable name="info" select="
- self::article/articleinfo | self::appendix/appendixinfo |
- self::chapter/chapterinfo | self::preface/prefaceinfo |
- self::sect1/sect1info | self::sect2/sect2info |
- self::sect3/sect3info | self::sect4/sect4info |
- self::sect5/sect5info | self::section/sectioninfo |
- self::set/setinfo | self::book/bookinfo |
- self::part/partinfo | self::reference/referenceinfo |
- self::glossary/glossaryinfo | self::index/indexinfo |
- self::refentry/refentryinfo | self::simplesect/simplesectinfo |
- self::bibliography/bibliographyinfo"/>
- <xsl:if test="$info">
- <xsl:call-template name="yelp.chunk">
- <xsl:with-param name="id" select="'title-page'"/>
- <xsl:with-param name="node" select="$info"/>
- <xsl:with-param name="content">
- <xsl:call-template name="yelp.navbar.top">
- <xsl:with-param name="prev" select="false()"/>
- <xsl:with-param name="next" select="'toc'"/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when test="self::article/articleinfo">
- <xsl:call-template name="article.titlepage"/>
- </xsl:when>
- <xsl:when test="self::appendix/appendixinfo">
- <xsl:call-template name="appendix.titlepage"/>
- </xsl:when>
- <xsl:when test="self::chapter/chapterinfo">
- <xsl:call-template name="chapter.titlepage"/>
- </xsl:when>
- <xsl:when test="self::preface/prefaceinfo">
- <xsl:call-template name="preface.titlepage"/>
- </xsl:when>
- <xsl:when test="self::sect1/sect1info">
- <xsl:call-template name="sect1.titlepage"/>
- </xsl:when>
- <xsl:when test="self::sect2/sect2info">
- <xsl:call-template name="sect2.titlepage"/>
- </xsl:when>
- <xsl:when test="self::sect3/sect3info">
- <xsl:call-template name="sect3.titlepage"/>
- </xsl:when>
- <xsl:when test="self::sect4/sect4info">
- <xsl:call-template name="sect4.titlepage"/>
- </xsl:when>
- <xsl:when test="self::sect5/sect5info">
- <xsl:call-template name="sect5.titlepage"/>
- </xsl:when>
- <xsl:when test="self::section/sectioninfo">
- <xsl:call-template name="section.titlepage"/>
- </xsl:when>
- <xsl:when test="self::set/setinfo">
- <xsl:call-template name="set.titlepage"/>
- </xsl:when>
- <xsl:when test="self::book/bookinfo">
- <xsl:call-template name="book.titlepage"/>
- </xsl:when>
- <xsl:when test="self::part/partinfo">
- <xsl:call-template name="part.titlepage"/>
- </xsl:when>
- <xsl:when test="self::reference/referenceinfo">
- <xsl:call-template name="reference.titlepage"/>
- </xsl:when>
- <xsl:when test="self::glossary/glossaryinfo">
- <xsl:call-template name="glossary.titlepage"/>
- </xsl:when>
- <xsl:when test="self::index/indexinfo">
- <xsl:call-template name="index.titlepage"/>
- </xsl:when>
- <xsl:when test="self::bibliography/bibliographyinfo">
- <xsl:call-template name="bibliography.titlepage"/>
- </xsl:when>
- <xsl:when test="self::refentry/refentryinfo">
- <xsl:call-template name="refentry.titlepage"/>
- </xsl:when>
- <xsl:when test="self::simplesect/simplesectinfo">
- <xsl:call-template name="simplesect.titlepage"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>
- <xsl:text>Could not construct a titlepage for </xsl:text>
- <xsl:value-of select="local-name(.)"/>
- <xsl:text>.</xsl:text>
- </xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:call-template name="yelp.navbar.bottom">
- <xsl:with-param name="prev" select="false()"/>
- <xsl:with-param name="next" select="'toc'"/>
- <xsl:with-param name="up" select="false()"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
+ <xsl:if test="$generate_titlepage and $info and ($node = /*)">
+ <xsl:apply-templates select="$info" mode="chunk.mode"/>
</xsl:if>
-</xsl:template>
-<xsl:template name="yelp.component.chunk">
- <xsl:param name="depth" select="0"/>
- <xsl:variable name="prev" select="yelp:get-prev(.)"/>
- <xsl:variable name="next" select="yelp:get-next(.)"/>
-
- <xsl:if test="($depth != 0) or ($yelp_max_chunk_depth = 0)">
- <xsl:call-template name="yelp.chunk">
- <xsl:with-param name="id" select="@id"/>
- <xsl:with-param name="node" select="."/>
- <xsl:with-param name="content">
- <xsl:call-template name="yelp.navbar.top">
- <xsl:with-param name="node" select="."/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
- <div class="{local-name(.)}">
- <xsl:call-template name="yelp.title"/>
- <xsl:apply-templates select="yelp:get-content(.)"/>
- <!-- Don't make TOC for part and reference, because nwalsh's
- stylesheets automatically stick one in for partintro. -->
- <xsl:if test="not(self::part | self::reference)">
- <xsl:choose>
- <xsl:when test="($depth &lt; $yelp_max_chunk_depth)
- and (count(yelp:get-divisions(.)) &gt; 0)">
- <div class="toc">
- <p><b>
- <xsl:call-template name="gentext">
- <xsl:with-param name="key">TableofContents</xsl:with-param>
- </xsl:call-template>
- </b></p>
- <dl>
- <xsl:apply-templates select="yelp:get-divisions(.)" mode="toc"/>
- </dl>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="yelp:get-divisions(.)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </div>
- <xsl:call-template name="yelp.navbar.bottom">
- <xsl:with-param name="node" select="."/>
- <xsl:with-param name="prev" select="$prev"/>
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
+ <xsl:if test="count($node/ancestor::*[&is-division;]) &lt; $chunk_depth">
+ <xsl:apply-templates select="$divisions" mode="chunk.mode"/>
</xsl:if>
-
- <xsl:if test="($depth &lt; $yelp_max_chunk_depth)
- and (count(yelp:get-divisions(.)) &gt; 0)">
- <xsl:for-each select="yelp:get-divisions(.)">
- <xsl:call-template name="yelp.component.chunk">
- <xsl:with-param name="depth" select="$depth + 1"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="/*">
- <xsl:call-template name="yelp.root"/>
</xsl:template>
-<xsl:template name="yelp.root">
- <xsl:variable name="next" select="yelp:get-next(.)"/>
-
- <xsl:comment> End of header </xsl:comment>
-
- <xsl:call-template name="yelp.titlepage.chunk"/>
-
- <xsl:call-template name="yelp.chunk">
- <xsl:with-param name="id" select="'toc'"/>
- <xsl:with-param name="node" select="."/>
- <xsl:with-param name="content">
- <xsl:call-template name="yelp.navbar.top">
- <xsl:with-param name="node" select="."/>
- <xsl:with-param name="prev" select="'title-page'"/>
- <xsl:with-param name="next" select="$next"/>
- </xsl:call-template>
- <xsl:call-template name="yelp.title"/>
- <p class="about"><a>
- <xsl:attribute name="href">
- <xsl:call-template name="yelp.titlepage.ref"/>
- </xsl:attribute>
- <xsl:call-template name="gentext.template">
- <xsl:with-param name="context" select="'title'"/>
- <xsl:with-param name="name" select="'bookinfo'"/>
- </xsl:call-template>
- </a></p>
- <xsl:apply-templates select="yelp:get-content(.)"/>
- <div class="toc">
- <p><b>
- <xsl:call-template name="gentext">
- <xsl:with-param name="key">TableofContents</xsl:with-param>
- </xsl:call-template>
- </b></p>
- <dl>
- <xsl:apply-templates select="yelp:get-divisions(.)" mode="toc"/>
- </dl>
- </div>
- <xsl:call-template name="yelp.navbar.bottom">
- <xsl:with-param name="node" select="."/>
- <xsl:with-param name="prev" select="'title-page'"/>
- <xsl:with-param name="next" select="$next"/>
- <xsl:with-param name="up" select="false()"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:for-each select="yelp:get-divisions(.)">
- <xsl:call-template name="yelp.component.chunk">
- <xsl:with-param name="depth" select="1"/>
- </xsl:call-template>
- </xsl:for-each>
-
- <xsl:comment> Start of footer </xsl:comment>
+<xsl:template name="html">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="leaf" select="true()"/>
+ <xsl:variable name="prevlink">
+ <xsl:apply-templates select="$node" mode="navbar.prev.link.mode"/>
+ </xsl:variable>
+ <xsl:variable name="nextlink">
+ <xsl:apply-templates select="$node" mode="navbar.next.link.mode"/>
+ </xsl:variable>
+
+ <div>
+ <table width="100%" cellpadding="0" cellspacing="0">
+ <tr width="100%">
+ <td width="50%" style="text-align: left;">
+ <xsl:copy-of select="$prevlink"/>
+ </td>
+ <td width="50%" style="text-align: right;">
+ <xsl:copy-of select="$nextlink"/>
+ </td>
+ </tr>
+ </table>
+ <hr/>
+
+ <xsl:apply-templates select="$node">
+ <xsl:with-param name="depth" select="0"/>
+ <xsl:with-param name="leaf" select="$leaf"/>
+ </xsl:apply-templates>
+
+ <hr/>
+ <table width="100%" cellpadding="0" cellspacing="0">
+ <tr width="100%">
+ <td width="50%" style="text-align: left;">
+ <xsl:copy-of select="$prevlink"/>
+ </td>
+ <td width="50%" style="text-align: right;">
+ <xsl:copy-of select="$nextlink"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+</xsl:template>
+
+<xsl:template name="xref.target">
+ <xsl:param name="linkend" select="@linkend"/>
+ <xsl:param name="target" select="id($linkend)"/>
+ <xsl:variable name="chunk_id">
+ <xsl:apply-templates select="$target" mode="chunk.id.mode"/>
+ </xsl:variable>
+ <xsl:text>ghelp:</xsl:text>
+ <xsl:value-of select="$doc_name"/>
+ <xsl:text>?</xsl:text>
+ <xsl:value-of select="$chunk_id"/>
</xsl:template>
</xsl:stylesheet>