summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.in1
-rw-r--r--doc/yelp-xsl/Makefile.am3
-rw-r--r--xslt/Makefile.am3
-rw-r--r--xslt/common/Makefile.am2
-rw-r--r--xslt/common/theme.xsl269
-rw-r--r--xslt/docbook/html/db2html-css.xsl20
-rw-r--r--xslt/mallard/html/mal2html-css.xsl20
-rw-r--r--xslt/theme/Makefile.am9
-rw-r--r--xslt/theme/test-theme.xslt177
-rw-r--r--xslt/theme/theme-colors.xsl177
-rw-r--r--xslt/theme/theme-icons.xsl157
11 files changed, 546 insertions, 292 deletions
diff --git a/configure.in b/configure.in
index d37b8bf9..b0f64dfc 100644
--- a/configure.in
+++ b/configure.in
@@ -62,6 +62,7 @@ xslt/mallard/cache/Makefile
xslt/mallard/common/Makefile
xslt/mallard/html/Makefile
xslt/gettext/Makefile
+xslt/theme/Makefile
])
AC_OUTPUT
diff --git a/doc/yelp-xsl/Makefile.am b/doc/yelp-xsl/Makefile.am
index 1dccf1fd..e9abaac8 100644
--- a/doc/yelp-xsl/Makefile.am
+++ b/doc/yelp-xsl/Makefile.am
@@ -8,7 +8,8 @@ xsldoc_dirs = \
$(ABS_SRCDIR)/../../xslt/docbook/omf \
$(ABS_SRCDIR)/../../xslt/mallard/cache \
$(ABS_SRCDIR)/../../xslt/mallard/common \
- $(ABS_SRCDIR)/../../xslt/mallard/html
+ $(ABS_SRCDIR)/../../xslt/mallard/html \
+ $(ABS_SRCDIR)/../../xslt/theme
xsldoc_xsls = $(filter-out %db2html-suppressed.xsl, \
$(sort $(patsubst ./%, %, \
diff --git a/xslt/Makefile.am b/xslt/Makefile.am
index d9466fd4..7bc3a19e 100644
--- a/xslt/Makefile.am
+++ b/xslt/Makefile.am
@@ -1 +1,2 @@
-SUBDIRS = gettext docbook mallard common # gettext needs to be first
+# gettext needs to be first
+SUBDIRS = gettext docbook mallard common theme
diff --git a/xslt/common/Makefile.am b/xslt/common/Makefile.am
index 70cea637..7811c706 100644
--- a/xslt/common/Makefile.am
+++ b/xslt/common/Makefile.am
@@ -1,6 +1,6 @@
xsldir=$(datadir)/yelp-xsl/xslt/common
-xsl_DATA = theme.xsl utils.xsl
+xsl_DATA = utils.xsl
EXTRA_DIST=$(xsl_DATA)
diff --git a/xslt/common/theme.xsl b/xslt/common/theme.xsl
deleted file mode 100644
index 23ad2f98..00000000
--- a/xslt/common/theme.xsl
+++ /dev/null
@@ -1,269 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- -->
-<!--
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU Lesser General Public License as published by the Free
-Software Foundation; either version 2 of the License, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with this program; see the file COPYING.LGPL. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA.
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
-<!--!!==========================================================================
-Themes
-:Requires: gettext
-
-This module provides a common interface to specify custom colors and icons
-for transformations to presentation-oreinted formats. This allows similar
-output for different types of input documents. Theme information may either
-be passed in as XSLT parameters or specified in a theme file.
-
-REMARK: Describe the format of theme files.
--->
-
-
-<!-- == Colors ============================================================= -->
-
-<!--@@==========================================================================
-theme.color.background
-The background color
-
-This parameter specifies the default background color.
--->
-<xsl:param name="theme.color.background" select="'#ffffff'"/>
-
-<!--@@==========================================================================
-theme.color.link
-The color of links
-
-If set, this parameter specifies the color for unvisited links.
--->
-<xsl:param name="theme.color.link" select="'#1f609f'"/>
-
-<!--@@==========================================================================
-theme.color.link_visited
-The color of visited links
-
-This parameter specifies the color for visited links.
--->
-<xsl:param name="theme.color.link_visited" select="'#9f1f6f'"/>
-
-<!--@@==========================================================================
-theme.color.text
-The normal text color
-
-This parameter specifies the default color for normal text.
--->
-<xsl:param name="theme.color.text" select="'#000000'"/>
-
-<!--@@==========================================================================
-theme.color.text_light
-The light text color
-
-This parameter specifies the color for light text. The light text
-color is used to make bold headings and certain parenthetical text less intense.
--->
-<xsl:param name="theme.color.text_light" select="'#3f3f3f'"/>
-
-<!--@@==========================================================================
-theme.color.blue_background
-The blue background color
-
-This parameter specifies the blue background color. The blue
-background color may be used by certain types of block elements.
--->
-<xsl:param name="theme.color.blue_background" select="'#f0f9ff'"/>
-
-<!--@@==========================================================================
-theme.color.blue_border
-The blue border color
-
-This parameter specifies the blue border color. The blue
-border color may be used by certain types of block elements.
--->
-<xsl:param name="theme.color.blue_border" select="'#c0c9ff'"/>
-
-<!--@@==========================================================================
-theme.color.gray_background
-The gray background color
-
-This parameter specifies the gray background color. The gray
-background color may be used by certain types of block elements.
--->
-<xsl:param name="theme.color.gray_background" select="'#f9f9f6'"/>
-
-<!--@@==========================================================================
-theme.color.gray_border
-The gray border color
-
-This parameter specifies the gray border color. The gray
-border color may be used by certain types of block elements.
--->
-<xsl:param name="theme.color.gray_border" select="'#e0e0df'"/>
-
-<!--@@==========================================================================
-theme.color.red_background
-The red background color
-
-This parameter specifies the red background color. The red
-background color may be used by certain types of block elements.
--->
-<xsl:param name="theme.color.red_background" select="'#fff0f0'"/>
-
-<!--@@==========================================================================
-theme.color.red_border
-The red border color
-
-This parameter specifies the red border color. The red
-border color may be used by certain types of block elements.
--->
-<xsl:param name="theme.color.red_border" select="'#ffc0c0'"/>
-
-<!--@@==========================================================================
-theme.color.yellow_background
-The yellow background color
-
-This parameter specifies the yellow background color. The yellow
-background color may be used by certain types of block elements.
--->
-<xsl:param name="theme.color.yellow_background" select="'#fffff0'"/>
-
-<!--@@==========================================================================
-theme.color.yellow_border
-The yellow border color
-
-This parameter specifies the yellow border color. The yellow
-border color may be used by certain types of block elements.
--->
-<xsl:param name="theme.color.yellow_border" select="'#ffffc0'"/>
-
-
-<!-- == Admonition Icons =================================================== -->
-
-<!--@@==========================================================================
-theme.icon.admon.path
-The default path to the admonition icons
-
-This parameter specifies a default path where admonition icons can be found.
-This is only a default path. It has no effect on admonition icons for which
-the corresponding parameter has been specified explicitly.
--->
-<xsl:param name="theme.icon.admon.path" select="''"/>
-
-<!--@@==========================================================================
-theme.icon.admon.size
-The size of the admonition icons
-
-This parameter specifies the size of the icons given in @{theme.icon.admon.bug},
-@{theme.icon.admon.caution}, @{theme.icon.admon.important}, @{theme.icon.admon.note},
-@{theme.icon.admon.tip}, and @{theme.icon.admon.warning}. The value of this parameter
-should be a single integer specifying both the width and the height in pixels. Icon
-sizes are assumed to be square.
--->
-<xsl:param name="theme.icon.admon.size" select="48"/>
-
-<!--@@==========================================================================
-theme.icon.admon.bug
-The path for the bug admonition icon
-
-This parameter specifies the icon used for bug admonitions.
--->
-<xsl:param name="theme.icon.admon.bug"
- select="concat($theme.icon.admon.path, 'admon-bug.png')"/>
-
-<!--@@==========================================================================
-theme.icon.admon.caution
-The path for the caution admonition icon
-
-This parameter specifies the icon used for caution admonitions.
--->
-<xsl:param name="theme.icon.admon.caution"
- select="concat($theme.icon.admon.path, 'admon-caution.png')"/>
-
-<!--@@==========================================================================
-theme.icon.admon.important
-The path for the important admonition icon
-
-This parameter specifies the icon used for important admonitions.
--->
-<xsl:param name="theme.icon.admon.important"
- select="concat($theme.icon.admon.path, 'admon-important.png')"/>
-
-<!--@@==========================================================================
-theme.icon.admon.note
-The path for the note admonition icon
-
-This parameter specifies the icon used for note admonitions.
--->
-<xsl:param name="theme.icon.admon.note"
- select="concat($theme.icon.admon.path, 'admon-note.png')"/>
-
-<!--@@==========================================================================
-theme.icon.admon.tip
-The path for the tip admonition icon
-
-This parameter specifies the icon used for tip admonitions.
--->
-<xsl:param name="theme.icon.admon.tip"
- select="concat($theme.icon.admon.path, 'admon-tip.png')"/>
-
-<!--@@==========================================================================
-theme.icon.admon.warning
-The path for the warning admonition icon
-
-This parameter specifies the icon used for warning admonitions.
--->
-<xsl:param name="theme.icon.admon.warning"
- select="concat($theme.icon.admon.path, 'admon-warning.png')"/>
-
-
-<!-- == Watermarks ========================================================= -->
-
-<!--@@==========================================================================
-theme.watermark.path
-The default path to the watermark graphics
-
-This parameter specifies a default path where watermark graphics can be found.
-This is only a default path. It has no effect on watermark graphics for which
-the corresponding parameter has been specified explicitly.
--->
-<xsl:param name="theme.watermark.path" select="''"/>
-
-<!--@@==========================================================================
-theme.watermark.blockquote
-The path for the blockquote watermark graphic
-
-This parameter specifies the graphic file used for blockquote watermarks. Note
-that the default graphic is translatable. If you set this parameter, you should
-ensure that your graphic uses a suitable quote character for the language your
-document is written in.
--->
-<xsl:param name="theme.watermark.blockquote">
- <xsl:value-of select="$theme.watermark.path"/>
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'watermark-blockquote-201C.png'"/>
- </xsl:call-template>
-</xsl:param>
-
-<!--@@==========================================================================
-theme.watermark.code
-The path for the code block watermark graphic
-
-This parameter specifies the graphic file used for code block watermarks.
--->
-<xsl:param name="theme.watermark.code">
- <xsl:value-of select="$theme.watermark.path"/>
- <xsl:text>watermark-code.png</xsl:text>
-</xsl:param>
-
-</xsl:stylesheet>
diff --git a/xslt/docbook/html/db2html-css.xsl b/xslt/docbook/html/db2html-css.xsl
index 398afd66..ea7b0e5e 100644
--- a/xslt/docbook/html/db2html-css.xsl
+++ b/xslt/docbook/html/db2html-css.xsl
@@ -23,7 +23,7 @@ Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
<!--!!==========================================================================
DocBook to HTML - CSS
-:Requires: db2html-footnote db2html-callout db2html-qanda gettext theme
+:Requires: db2html-footnote db2html-callout db2html-qanda gettext theme-colors theme-icons
REMARK: Describe this module
-->
@@ -283,27 +283,27 @@ div.admonition {
}
div.caution-inner, div.important-inner, div.note-inner, div.tip-inner, div.warning-inner {
padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: </xsl:text>
- <xsl:value-of select="$theme.icon.admon.size + 12"/><xsl:text>px;
+ <xsl:value-of select="$theme.icons.emblem.size + 12"/><xsl:text>px;
background-position: </xsl:text><xsl:value-of select="$left"/><xsl:text> top;
background-repeat: no-repeat;
- min-height: </xsl:text><xsl:value-of select="$theme.icon.admon.size"/><xsl:text>px;
+ min-height: </xsl:text><xsl:value-of select="$theme.icons.emblem.size"/><xsl:text>px;
}
div.caution-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.caution"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note.warning"/><xsl:text>"); }
div.important-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.important"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note.important"/><xsl:text>"); }
div.note-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.note"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note"/><xsl:text>"); }
div.note-bug div.note-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.bug"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note.bug"/><xsl:text>"); }
div.tip-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.tip"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note.tip"/><xsl:text>"); }
div.warning-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.warning"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note.warning"/><xsl:text>"); }
div.blockquote {
<!-- FIXME: i18n -->
background-image: url('</xsl:text>
- <xsl:value-of select="$theme.watermark.blockquote"/><xsl:text>');
+ <xsl:value-of select="$theme.icons.watermark.quote"/><xsl:text>');
background-repeat: no-repeat;
background-position: top </xsl:text><xsl:value-of select="$left"/><xsl:text>;
padding: 0.5em;
diff --git a/xslt/mallard/html/mal2html-css.xsl b/xslt/mallard/html/mal2html-css.xsl
index 6553df10..46d6cbeb 100644
--- a/xslt/mallard/html/mal2html-css.xsl
+++ b/xslt/mallard/html/mal2html-css.xsl
@@ -261,7 +261,7 @@ pre.code {
* watermark, or we need a separate RTL version.
*/
background: url('</xsl:text>
- <xsl:value-of select="$theme.watermark.code"/><xsl:text>') no-repeat top right;
+ <xsl:value-of select="$theme.icons.watermark.code"/><xsl:text>') no-repeat top right;
border: solid 2px </xsl:text>
<xsl:value-of select="$theme.color.gray_border"/><xsl:text>;
padding: 0.5em 1em 0.5em 1em;
@@ -305,28 +305,28 @@ div.note {
div.note-inner {
margin: 0;
padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: </xsl:text>
- <xsl:value-of select="$theme.icon.admon.size + 12"/><xsl:text>px;
+ <xsl:value-of select="$theme.icons.emblem.size + 12"/><xsl:text>px;
background-position: </xsl:text><xsl:value-of select="$left"/><xsl:text> top;
background-repeat: no-repeat;
- min-height: </xsl:text><xsl:value-of select="$theme.icon.admon.size"/><xsl:text>px;
+ min-height: </xsl:text><xsl:value-of select="$theme.icons.emblem.size"/><xsl:text>px;
background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.note"/><xsl:text>");
+ <xsl:value-of select="$theme.icons.emblem.note"/><xsl:text>");
}
div.note-advanced div.note-inner { <!-- background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.advanced"/><xsl:text>"); --> }
+ <xsl:value-of select="$theme.icons.emblem.note.advanced"/><xsl:text>"); --> }
div.note-bug div.note-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.bug"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note.bug"/><xsl:text>"); }
div.note-important div.note-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.important"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note.important"/><xsl:text>"); }
div.note-tip div.note-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.tip"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note.tip"/><xsl:text>"); }
div.note-warning div.note-inner { background-image: url("</xsl:text>
- <xsl:value-of select="$theme.icon.admon.warning"/><xsl:text>"); }
+ <xsl:value-of select="$theme.icons.emblem.note.warning"/><xsl:text>"); }
div.note-contents { margin: 0; padding: 0; }
div.quote-inner {
margin: 0;
background-image: url('</xsl:text>
- <xsl:value-of select="$theme.watermark.blockquote"/><xsl:text>');
+ <xsl:value-of select="$theme.icons.watermark.quote"/><xsl:text>');
background-repeat: no-repeat;
background-position: top </xsl:text><xsl:value-of select="$left"/><xsl:text>;
padding: 0.5em;
diff --git a/xslt/theme/Makefile.am b/xslt/theme/Makefile.am
new file mode 100644
index 00000000..5c38e13c
--- /dev/null
+++ b/xslt/theme/Makefile.am
@@ -0,0 +1,9 @@
+xsldir=$(datadir)/yelp-xsl/xslt/theme
+
+xsl_DATA = \
+ theme-colors.xsl \
+ theme-html.xsl \
+ theme-icons.xsl
+
+EXTRA_DIST=$(xsl_DATA)
+
diff --git a/xslt/theme/test-theme.xslt b/xslt/theme/test-theme.xslt
new file mode 100644
index 00000000..6e44dc67
--- /dev/null
+++ b/xslt/theme/test-theme.xslt
@@ -0,0 +1,177 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:output method="html"/>
+
+<xsl:include href="../gettext/gettext.xsl"/>
+<xsl:include href="theme-colors.xsl"/>
+
+<xsl:template match="/">
+ <html>
+ <head>
+ <style type="text/css">
+<xsl:text>
+body {
+ background-color: </xsl:text><xsl:value-of select="$theme.color.background"/><xsl:text>;
+}
+h1 {
+ margin: 0;
+ font-size: 1.44em;
+ color: </xsl:text><xsl:value-of select="$theme.color.text_light"/><xsl:text>;
+}
+h2 {
+ margin: 2em 0 0 0;
+ font-size: 1.2em;
+ color: </xsl:text><xsl:value-of select="$theme.color.text_light"/><xsl:text>;
+}
+div {
+ min-height: 4em;
+ min-width: 4em;
+ margin: 1em 1em 0 0;
+ padding: 2px;
+}
+p { margin: 0.5em 0 0.5em 0; }
+td div { text-align: center; }
+p.text {
+ color: </xsl:text><xsl:value-of select="$theme.color.text"/><xsl:text>;
+}
+p.light {
+ color: </xsl:text><xsl:value-of select="$theme.color.text_light"/><xsl:text>;
+}
+p.link {
+ color: </xsl:text><xsl:value-of select="$theme.color.link"/><xsl:text>;
+}
+p.visited {
+ color: </xsl:text><xsl:value-of select="$theme.color.link_visited"/><xsl:text>;
+}
+div.graybg {
+ background-color: </xsl:text><xsl:value-of select="$theme.color.gray_background"/><xsl:text>;
+}
+div.darkbg {
+ background-color: </xsl:text><xsl:value-of select="$theme.color.dark_background"/><xsl:text>;
+}
+div.bluebg {
+ background-color: </xsl:text><xsl:value-of select="$theme.color.blue_background"/><xsl:text>;
+}
+div.redbg {
+ background-color: </xsl:text><xsl:value-of select="$theme.color.red_background"/><xsl:text>;
+}
+div.yellowbg {
+ background-color: </xsl:text><xsl:value-of select="$theme.color.yellow_background"/><xsl:text>;
+}
+div.graybr {
+ border: solid 2px </xsl:text><xsl:value-of select="$theme.color.gray_border"/><xsl:text>;
+}
+div.bluebr {
+ border: solid 2px </xsl:text><xsl:value-of select="$theme.color.blue_border"/><xsl:text>;
+}
+div.redbr {
+ border: solid 2px </xsl:text><xsl:value-of select="$theme.color.red_border"/><xsl:text>;
+}
+div.yellowbr {
+ border: solid 2px </xsl:text><xsl:value-of select="$theme.color.yellow_border"/><xsl:text>;
+}
+</xsl:text>
+ </style>
+ </head>
+ <body>
+ <h1>Yelp Theme Test</h1>
+ <xsl:call-template name="boxes"/>
+ <xsl:call-template name="texts"/>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template name="boxes">
+ <h2>Background Colors</h2>
+ <table>
+ <tr>
+ <td><div/></td>
+ <td><div class="graybr"/></td>
+ <td><div class="bluebr"/></td>
+ <td><div class="redbr"/></td>
+ <td><div class="yellowbr"/></td>
+ </tr>
+ <tr>
+ <td><div class="graybg"/></td>
+ <td><div class="graybg graybr"/></td>
+ <td><div class="graybg bluebr"/></td>
+ <td><div class="graybg redbr"/></td>
+ <td><div class="graybg yellowbr"/></td>
+ </tr>
+ <tr>
+ <td><div class="darkbg"/></td>
+ <td><div class="darkbg graybr"/></td>
+ <td><div class="darkbg bluebr"/></td>
+ <td><div class="darkbg redbr"/></td>
+ <td><div class="darkbg yellowbr"/></td>
+ </tr>
+ <tr>
+ <td><div class="bluebg"/></td>
+ <td><div class="bluebg graybr"/></td>
+ <td><div class="bluebg bluebr"/></td>
+ <td><div class="bluebg redbr"/></td>
+ <td><div class="bluebg yellowbr"/></td>
+ </tr>
+ <tr>
+ <td><div class="redbg"/></td>
+ <td><div class="redbg graybr"/></td>
+ <td><div class="redbg bluebr"/></td>
+ <td><div class="redbg redbr"/></td>
+ <td><div class="redbg yellowbr"/></td>
+ </tr>
+ <tr>
+ <td><div class="yellowbg"/></td>
+ <td><div class="yellowbg graybr"/></td>
+ <td><div class="yellowbg bluebr"/></td>
+ <td><div class="yellowbg redbr"/></td>
+ <td><div class="yellowbg yellowbr"/></td>
+ </tr>
+ </table>
+</xsl:template>
+
+<xsl:template name="texts">
+ <h2>Text Colors</h2>
+ <table>
+ <tr>
+ <td><div>
+ <p class="text">text</p>
+ <p class="light">light</p>
+ <p class="link">link</p>
+ <p class="visited">visited</p>
+ </div></td>
+ <td><div class="graybg">
+ <p class="text">text</p>
+ <p class="light">light</p>
+ <p class="link">link</p>
+ <p class="visited">visited</p>
+ </div></td>
+ <td><div class="darkbg">
+ <p class="text">text</p>
+ <p class="light">light</p>
+ <p class="link">link</p>
+ <p class="visited">visited</p>
+ </div></td>
+ <td><div class="bluebg">
+ <p class="text">text</p>
+ <p class="light">light</p>
+ <p class="link">link</p>
+ <p class="visited">visited</p>
+ </div></td>
+ <td><div class="redbg">
+ <p class="text">text</p>
+ <p class="light">light</p>
+ <p class="link">link</p>
+ <p class="visited">visited</p>
+ </div></td>
+ <td><div class="yellowbg">
+ <p class="text">text</p>
+ <p class="light">light</p>
+ <p class="link">link</p>
+ <p class="visited">visited</p>
+ </div></td>
+ </tr>
+ </table>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/xslt/theme/theme-colors.xsl b/xslt/theme/theme-colors.xsl
new file mode 100644
index 00000000..3ae1013b
--- /dev/null
+++ b/xslt/theme/theme-colors.xsl
@@ -0,0 +1,177 @@
+<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- -->
+<!--
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program; see the file COPYING.LGPL. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!--!!==========================================================================
+Theme Colors
+:Revision:version="1.0" date="2010-01-26"
+
+This stylesheet provides a common interface to specify custom colors for
+transformations to presentation-oreinted formats. This allows similar
+output for different types of input documents.
+-->
+
+<!--@@==========================================================================
+theme.color.background
+The background color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the default background color. Foreground colors
+should be legible on this color.
+-->
+<xsl:param name="theme.color.background" select="'#ffffff'"/>
+
+<!--@@==========================================================================
+theme.color.link
+The color of links.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the color for unvisited links. It should be
+legible on all background colors.
+-->
+<xsl:param name="theme.color.link" select="'#204a87'"/>
+
+<!--@@==========================================================================
+theme.color.link_visited
+The color of visited links.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the color for visited links. It should be
+legible on all background colors.
+-->
+<xsl:param name="theme.color.link_visited" select="'#5c3566'"/>
+
+<!--@@==========================================================================
+theme.color.text
+The normal text color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the default color for normal text. It should be
+legible on all background colors.
+-->
+<xsl:param name="theme.color.text" select="'#000000'"/>
+
+<!--@@==========================================================================
+theme.color.text_light
+The light text color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the color for light text. The light text
+color is used to make bold headings and certain parenthetical text
+less intense. It should be legible on all background colors.
+-->
+<xsl:param name="theme.color.text_light" select="'#444'"/>
+
+<!--@@==========================================================================
+theme.color.blue_background
+The blue background color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the blue background color. The blue
+background color may be used by certain types of block elements.
+Foreground colors should be legible on this color.
+-->
+<xsl:param name="theme.color.blue_background" select="'#c6d8eb'"/>
+
+<!--@@==========================================================================
+theme.color.blue_border
+The blue border color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the blue border color. The blue
+border color may be used by certain types of block elements.
+-->
+<xsl:param name="theme.color.blue_border" select="'#3465a4'"/>
+
+<!--@@==========================================================================
+theme.color.gray_background
+The gray background color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the gray background color. The gray
+background color may be used by certain types of block elements.
+Foreground colors should be legible on this color.
+-->
+<xsl:param name="theme.color.gray_background" select="'#dfe1d3'"/>
+
+<!--@@==========================================================================
+theme.color.dark_background
+The dark gray background color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the dark gray background color. The dark
+gray background color may be used by certain types of block elements.
+Foreground colors should be legible on this color.
+-->
+<xsl:param name="theme.color.dark_background" select="'#d3d7cf'"/>
+
+<!--@@==========================================================================
+theme.color.gray_border
+The gray border color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the gray border color. The gray
+border color may be used by certain types of block elements.
+-->
+<xsl:param name="theme.color.gray_border" select="'#888a85'"/>
+
+<!--@@==========================================================================
+theme.color.red_background
+The red background color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the red background color. The red
+background color may be used by certain types of block elements.
+Foreground colors should be legible on this color.
+-->
+<xsl:param name="theme.color.red_background" select="'#f8a9a9'"/>
+
+<!--@@==========================================================================
+theme.color.red_border
+The red border color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the red border color. The red
+border color may be used by certain types of block elements.
+-->
+<xsl:param name="theme.color.red_border" select="'#cc0000'"/>
+
+<!--@@==========================================================================
+theme.color.yellow_background
+The yellow background color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the yellow background color. The yellow
+background color may be used by certain types of block elements.
+Foreground colors should be legible on this color.
+-->
+<xsl:param name="theme.color.yellow_background" select="'#fdf3a6'"/>
+
+<!--@@==========================================================================
+theme.color.yellow_border
+The yellow border color.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the yellow border color. The yellow
+border color may be used by certain types of block elements.
+-->
+<xsl:param name="theme.color.yellow_border" select="'#c4a000'"/>
+
+</xsl:stylesheet>
diff --git a/xslt/theme/theme-icons.xsl b/xslt/theme/theme-icons.xsl
new file mode 100644
index 00000000..f3aa2d32
--- /dev/null
+++ b/xslt/theme/theme-icons.xsl
@@ -0,0 +1,157 @@
+<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- -->
+<!--
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program; see the file COPYING.LGPL. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!--!!==========================================================================
+Theme Icons
+:Requires: gettext
+
+This module provides a common interface to specify icons for transformations
+to presentation-oreinted formats. This allows similar output for different
+types of input documents.
+
+Icons are divided into two groups: emblems and watermarks. Emblems are placed
+next to text content, and are generally smaller and more colorful. Watermarks
+may be used as a background, and are generally larger and without color.
+-->
+
+<!--@@==========================================================================
+theme.icons.base_url
+The default URL prefix for all icons.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter provides a default URL prefix. All icon locations in this
+stylesheet reference files directly under this URL prefix by default. If
+you override the individual icon parameters in this stylesheet, this parameter
+has no effect. This parameter should end with a trailing slash.
+-->
+<xsl:param name="theme.icons.base_url" select="''"/>
+
+
+<!--@@==========================================================================
+theme.icons.emblem.size
+The size of the emblem icons.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the size of the emblem icons. Use an integer giving
+the width of the image files in pixels. Icons are assumed to be square, and all
+emblem icons are assumed to have the same size.
+-->
+<xsl:param name="theme.icons.emblem.size" select="24"/>
+
+
+<!--@@==========================================================================
+theme.icons.watermark.size
+The size of the emblem icons.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the size of the watermark icons. Use an integer giving
+the width of the image files in pixels. Icons are assumed to be square, and all
+watermark icons are assumed to have the same size.
+-->
+<xsl:param name="theme.icons.watermark.size" select="72"/>
+
+
+<!--@@==========================================================================
+theme.icons.emblem.note
+The URL for the note emblem.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the URL for emblem icon used for regular notes.
+-->
+<xsl:param name="theme.icons.emblem.note"
+ select="concat($theme.icons.base_url, 'yelp-note.png')"/>
+
+
+<!--@@==========================================================================
+theme.icons.emblem.note.bug
+The URL for the bug note emblem.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the URL for emblem icon used for bug notes.
+-->
+<xsl:param name="theme.icons.emblem.note.bug"
+ select="concat($theme.icons.base_url, 'yelp-note-bug.png')"/>
+
+
+<!--@@==========================================================================
+theme.icons.emblem.note.important
+The URL for the important note emblem.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the URL for emblem icon used for important notes.
+-->
+<xsl:param name="theme.icons.emblem.note.important"
+ select="concat($theme.icons.base_url, 'yelp-note-important.png')"/>
+
+
+<!--@@==========================================================================
+theme.icons.emblem.note.tip
+The URL for the tip note emblem.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the URL for emblem icon used for tip notes.
+-->
+<xsl:param name="theme.icons.emblem.note.tip"
+ select="concat($theme.icons.base_url, 'yelp-note-tip.png')"/>
+
+
+<!--@@==========================================================================
+theme.icons.emblem.note.warning
+The URL for the warning note emblem.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the URL for emblem icon used for warning notes.
+-->
+<xsl:param name="theme.icons.emblem.note.warning"
+ select="concat($theme.icons.base_url, 'yelp-note-warning.png')"/>
+
+
+<!--@@==========================================================================
+theme.icons.watermark.quote
+The URL for the block quote watermark.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the URL for the watermark for block quotes. The
+default name of the image file is translatable. If you set this parameter,
+you should ensure that your graphic uses a suitable quote character for the
+language your document is written in.
+-->
+<xsl:param name="theme.icons.watermark.quote">
+ <xsl:value-of select="$theme.icons.base_url"/>
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'yelp-watermark-quote-201C.png'"/>
+ </xsl:call-template>
+</xsl:param>
+
+
+<!--@@==========================================================================
+theme.icons.watermark.code
+The URL for the block code watermark.
+:Revision:version="1.0" date="2010-01-26"
+
+This parameter specifies the URL for the watermark for block code.
+-->
+<xsl:param name="theme.icons.watermark.code">
+ <xsl:value-of select="$theme.icons.base_url"/>
+ <xsl:text>yelp-watermark-code.png</xsl:text>
+</xsl:param>
+
+</xsl:stylesheet>