Boost logo

Boost-Commit :

From: matias_at_[hidden]
Date: 2007-06-14 04:57:32


Author: matias
Date: 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
New Revision: 7040
URL: http://svn.boost.org/trac/boost/changeset/7040

Log:
a step from valid xhtml

Added:
   sandbox/doc_test/XSL/admon.xsl
   sandbox/doc_test/XSL/annotation.xsl
   sandbox/doc_test/XSL/callout.xsl
   sandbox/doc_test/XSL/chunk-common.xsl
   sandbox/doc_test/XSL/docbook-layout.xsl
   sandbox/doc_test/XSL/docbook.xsl
   sandbox/doc_test/XSL/error.xsl
   sandbox/doc_test/XSL/footer.xsl
   sandbox/doc_test/XSL/function.xsl
   sandbox/doc_test/XSL/global.xsl (contents, props changed)
   sandbox/doc_test/XSL/header.xsl
   sandbox/doc_test/XSL/html-single.xsl
   sandbox/doc_test/XSL/html.xsl
   sandbox/doc_test/XSL/index.xsl
   sandbox/doc_test/XSL/javascript.xsl
   sandbox/doc_test/XSL/library.xsl
   sandbox/doc_test/XSL/lookup.xsl
   sandbox/doc_test/XSL/macro.xsl
   sandbox/doc_test/XSL/manpages.xsl
   sandbox/doc_test/XSL/navbar.xsl
   sandbox/doc_test/XSL/reference.xsl
   sandbox/doc_test/XSL/relative-href.xsl
   sandbox/doc_test/XSL/source-highlight.xsl
   sandbox/doc_test/XSL/template.xsl
   sandbox/doc_test/XSL/type.xsl
   sandbox/doc_test/XSL/utility.xsl
   sandbox/doc_test/XSL/xhtml.xsl
   sandbox/doc_test/XSL/xref.xsl
   sandbox/doc_test/doc/xhtml/
   sandbox/doc_test/doc/xhtml/HTML.manifest
   sandbox/doc_test/doc/xhtml/boost_libs_grouped_links.xml
   sandbox/doc_test/doc/xhtml/boostbook.css (contents, props changed)
   sandbox/doc_test/doc/xhtml/document_to_test_formatting/
   sandbox/doc_test/doc/xhtml/document_to_test_formatting/basic_formatting_tests.html
   sandbox/doc_test/doc/xhtml/document_to_test_formatting/images.html
   sandbox/doc_test/doc/xhtml/document_to_test_formatting/introduction.html
   sandbox/doc_test/doc/xhtml/document_to_test_formatting/test.html
   sandbox/doc_test/doc/xhtml/grouped_links.js (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/
   sandbox/doc_test/doc/xhtml/images/DangerGeneral.svg
   sandbox/doc_test/doc/xhtml/images/callouts/
   sandbox/doc_test/doc/xhtml/images/callouts/1.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/10.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/11.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/12.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/13.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/14.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/15.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/2.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/3.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/4.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/5.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/6.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/7.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/8.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/callouts/9.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/caution.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/caution.svg
   sandbox/doc_test/doc/xhtml/images/footer-bg-left.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/footer-bg-right.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/footer-bg.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/header-fg.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/home.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/home.svg
   sandbox/doc_test/doc/xhtml/images/important.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/important.svg
   sandbox/doc_test/doc/xhtml/images/next.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/next.svg
   sandbox/doc_test/doc/xhtml/images/note.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/note.svg
   sandbox/doc_test/doc/xhtml/images/prev.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/prev.svg
   sandbox/doc_test/doc/xhtml/images/space.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/tip.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/tip.svg
   sandbox/doc_test/doc/xhtml/images/tip2.svg
   sandbox/doc_test/doc/xhtml/images/up.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/up.svg
   sandbox/doc_test/doc/xhtml/images/warning.png (contents, props changed)
   sandbox/doc_test/doc/xhtml/images/warning.svg
   sandbox/doc_test/doc/xhtml/index.html
   sandbox/doc_test/doc/xhtml/sections_grouped_links.xml
   sandbox/doc_test/grouped_links/
   sandbox/doc_test/grouped_links/css/
   sandbox/doc_test/grouped_links/css/grouped_links.css (contents, props changed)
   sandbox/doc_test/grouped_links/doc/
   sandbox/doc_test/grouped_links/doc/grouped_links.qbk (contents, props changed)
   sandbox/doc_test/grouped_links/doc/jamfile.v2 (contents, props changed)
   sandbox/doc_test/grouped_links/doc/xhtml/
   sandbox/doc_test/grouped_links/doc/xhtml/index.html
   sandbox/doc_test/grouped_links/example/
   sandbox/doc_test/grouped_links/example/boostbook_integration/
   sandbox/doc_test/grouped_links/example/boostbook_integration/example.qbk (contents, props changed)
   sandbox/doc_test/grouped_links/example/boostbook_integration/jamfile.v2 (contents, props changed)
   sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/
   sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/boost_libs_grouped_links.xml
   sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/grouped_links.js (contents, props changed)
   sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/sections_grouped_links.xml
   sandbox/doc_test/grouped_links/example/simple/
   sandbox/doc_test/grouped_links/example/simple/boost_libs.xml
   sandbox/doc_test/grouped_links/example/simple/simple.html
   sandbox/doc_test/grouped_links/index.html (contents, props changed)
   sandbox/doc_test/grouped_links/js/
   sandbox/doc_test/grouped_links/js/grouped_links.js (contents, props changed)
Binary files modified:
   sandbox/doc_test/doc/html/images/caution.png
   sandbox/doc_test/doc/html/images/important.png
   sandbox/doc_test/doc/html/images/space.png
Text files modified:
   sandbox/doc_test/doc/Jamfile.v2 | 21
   sandbox/doc_test/doc/html/boostbook.css | 1425 ++++++++++++++++++++++-----------------
   sandbox/doc_test/doc/test.qbk | 130 +-
   3 files changed, 887 insertions(+), 689 deletions(-)

Added: sandbox/doc_test/XSL/admon.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/admon.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- Not needed?
+
+xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/admon.xsl"/
+
+-->
+
+<xsl:import href="relative-href.xsl"/>
+
+ <xsl:template name="admon.graphic">
+ <xsl:param name="node" select="."/>
+
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$admon.graphics.path"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <xsl:when test="local-name($node)='note'">note</xsl:when>
+ <xsl:when test="local-name($node)='warning'">warning</xsl:when>
+ <xsl:when test="local-name($node)='caution'">caution</xsl:when>
+ <xsl:when test="local-name($node)='tip'">tip</xsl:when>
+ <xsl:when test="local-name($node)='important'">important</xsl:when>
+ <xsl:otherwise>note</xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:value-of select="$admon.graphics.extension"/>
+
+ </xsl:template>
+
+
+ <!-- overwrites docbook graphical.admonition -->
+
+ <xsl:template name="graphical.admonition">
+
+ <xsl:variable name="admon.type">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='note'">Note</xsl:when>
+ <xsl:when test="local-name(.)='warning'">Warning</xsl:when>
+ <xsl:when test="local-name(.)='caution'">Caution</xsl:when>
+ <xsl:when test="local-name(.)='tip'">Tip</xsl:when>
+ <xsl:when test="local-name(.)='important'">Important</xsl:when>
+ <xsl:otherwise>Note</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="alt">
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="$admon.type"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <div class="{name(.)}">
+ <div class="admonition-graphic">
+ <img alt="[{$alt}]">
+ <xsl:attribute name="src">
+ <xsl:call-template name="admon.graphic"/>
+ </xsl:attribute>
+ </img>
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">
+ <xsl:call-template name="anchor"/>
+ <xsl:if test="$admon.textlabel != 0 or title">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:if>
+ </div>
+ <div class="admonition-content">
+ <xsl:apply-templates/>
+ </div>
+ </div>
+ </div>
+
+ </xsl:template>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/annotation.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/annotation.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+ <xsl:key name="classes" match="class|struct|union" use="@name"/>
+ <xsl:key name="methods" match="method|overloaded-method" use="@name"/>
+ <xsl:key name="functions" match="function|overloaded-function" use="@name"/>
+ <xsl:key name="enums" match="enum" use="@name"/>
+ <xsl:key name="concepts" match="concept" use="@name"/>
+ <xsl:key name="libraries" match="library" use="@name"/>
+ <xsl:key name="macros" match="macro" use="@name"/>
+ <xsl:key name="headers" match="header" use="@name"/>
+ <xsl:key name="named-entities" match="class|struct|union|concept|function|overloaded-function|macro|library|namespace/data-member|header/data-member|*[attribute::id]" use="@name|@id"/>
+
+ <xsl:template match="function|overloaded-function" mode="generate.id">
+ <xsl:variable name="name" select="normalize-space(@name)"/>
+ <xsl:variable name="translated-name"
+ select="translate($name,
+ '~!%^&amp;*()[].,&lt;&gt;|/ +-=',
+ 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')"/>
+
+ <xsl:choose>
+ <xsl:when test="count(key('named-entities', $name))=1
+ and ($translated-name=$name)">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="separator" select="'.'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>-bb</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="classname" mode="annotation">
+ <!-- Determine the (possibly qualified) class name we are looking for -->
+ <xsl:variable name="fullname">
+ <xsl:choose>
+ <xsl:when test="@alt">
+ <xsl:value-of select="@alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Strip off any instantiation -->
+ <xsl:variable name="name">
+ <xsl:choose>
+ <xsl:when test="contains($fullname, '&lt;')">
+ <xsl:value-of select="substring-before($fullname, '&lt;')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$fullname"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Determine the unqualified name -->
+ <xsl:variable name="unqualified-name">
+ <xsl:call-template name="strip-qualifiers">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="cxx-link-name">
+ <xsl:with-param name="lookup" select="."/>
+ <xsl:with-param name="type" select="'class'"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="string(.)"/>
+ <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
+ <xsl:with-param name="nodes" select="key('classes', $unqualified-name)"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="methodname" mode="annotation">
+ <!-- Determine the (possibly qualified) method name we are looking for -->
+ <xsl:variable name="fullname">
+ <xsl:choose>
+ <xsl:when test="@alt">
+ <xsl:value-of select="@alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Strip off any call -->
+ <xsl:variable name="name">
+ <xsl:choose>
+ <xsl:when test="contains($fullname, '(')">
+ <xsl:value-of select="substring-before($fullname, '(')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$fullname"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Determine the unqualified name -->
+ <xsl:variable name="unqualified-name">
+ <xsl:call-template name="strip-qualifiers">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="cxx-link-name">
+ <xsl:with-param name="lookup" select="."/>
+ <xsl:with-param name="type" select="'method'"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="string(.)"/>
+ <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
+ <xsl:with-param name="nodes" select="key('methods', $unqualified-name)"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="functionname" mode="annotation">
+ <!-- Determine the (possibly qualified) function name we are
+ looking for -->
+ <xsl:variable name="fullname">
+ <xsl:choose>
+ <xsl:when test="@alt">
+ <xsl:value-of select="@alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Strip off any call -->
+ <xsl:variable name="name">
+ <xsl:choose>
+ <xsl:when test="contains($fullname, '(')">
+ <xsl:value-of select="substring-before($fullname, '(')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$fullname"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Determine the unqualified name -->
+ <xsl:variable name="unqualified-name">
+ <xsl:call-template name="strip-qualifiers">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="cxx-link-name">
+ <xsl:with-param name="lookup" select="."/>
+ <xsl:with-param name="type" select="'function'"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="string(.)"/>
+ <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
+ <xsl:with-param name="nodes"
+ select="key('functions', $unqualified-name)"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="enumname" mode="annotation">
+ <!-- Determine the (possibly qualified) enum name we are
+ looking for -->
+ <xsl:variable name="fullname">
+ <xsl:choose>
+ <xsl:when test="@alt">
+ <xsl:value-of select="@alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string(.)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Strip off any call -->
+ <xsl:variable name="name">
+ <xsl:choose>
+ <xsl:when test="contains($fullname, '(')">
+ <xsl:value-of select="substring-before($fullname, '(')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$fullname"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Determine the unqualified name -->
+ <xsl:variable name="unqualified-name">
+ <xsl:call-template name="strip-qualifiers">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:call-template name="cxx-link-name">
+ <xsl:with-param name="lookup" select="."/>
+ <xsl:with-param name="type" select="'enum'"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="string(.)"/>
+ <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
+ <xsl:with-param name="nodes"
+ select="key('enums', $unqualified-name)"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="libraryname" mode="annotation">
+ <xsl:variable name="name">
+ <xsl:choose>
+ <xsl:when test="@alt">
+ <xsl:value-of select="@alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="text()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="node" select="key('libraries', $name)"/>
+
+ <xsl:choose>
+ <xsl:when test="count($node)=0">
+ <xsl:message>
+ <xsl:text>warning: Cannot find library '</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$name"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="library.link">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="name" select="text()"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="conceptname" mode="annotation">
+ <xsl:param name="name" select="text()"/>
+
+ <xsl:call-template name="concept.link">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="macroname" mode="annotation">
+ <xsl:param name="name" select="text()"/>
+
+ <xsl:variable name="node" select="key('macros', $name)"/>
+ <xsl:choose>
+ <xsl:when test="count($node) = 0">
+ <xsl:message>
+ <xsl:text>warning: cannot find macro `</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$name"/>
+ </xsl:when>
+
+ <xsl:when test="count($node) = 1">
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="$name"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>error: macro `</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>' is multiply defined.</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$node"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="headername" mode="annotation">
+ <xsl:param name="name" select="text()"/>
+
+ <xsl:variable name="node" select="key('headers', $name)"/>
+ <xsl:choose>
+ <xsl:when test="count($node) = 0">
+ <xsl:message>
+ <xsl:text>warning: cannot find header `</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$name"/>
+ </xsl:when>
+
+ <xsl:when test="count($node) = 1">
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="$name"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>error: header `</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>' is multiply defined.</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$node"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="annotation">
+ <xsl:param name="highlight" select="false()"/>
+ <xsl:choose>
+ <xsl:when test="$highlight">
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="code" mode="annotation">
+ <computeroutput>
+ <xsl:apply-templates mode="annotation"/>
+ </computeroutput>
+ </xsl:template>
+
+ <xsl:template match="bold" mode="annotation">
+ <emphasis role="bold">
+ <xsl:apply-templates mode="annotation"/>
+ </emphasis>
+ </xsl:template>
+
+ <xsl:template match="comment()" mode="annotation">
+ <xsl:copy/>
+ </xsl:template>
+
+ <xsl:template match="node()" mode="annotation">
+ <xsl:param name="highlight" select="false()"/>
+
+ <xsl:element name="{name(.)}">
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:apply-templates select="./*|./text()" mode="annotation">
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:apply-templates>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- The "purpose" mode strips simpara/para elements so that we can
+ place the resulting text into a comment in the synopsis. -->
+ <xsl:template match="para|simpara" mode="purpose">
+ <xsl:apply-templates mode="annotation"/>
+ </xsl:template>
+
+ <xsl:template match="*" mode="purpose">
+ <xsl:apply-templates select="." mode="annotation"/>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="purpose">
+ <xsl:apply-templates select="." mode="annotation"/>
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/callout.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/callout.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2007 Joel de Guzman <djowel -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<!-- Not needed?
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/callout.xsl"/>
+
+-->
+
+<xsl:import href="relative-href.xsl"/>
+
+<xsl:template name="callout-bug">
+ <xsl:param name="conum" select='1'/>
+
+ <xsl:choose>
+ <xsl:when test="$callout.graphics != 0
+ and $conum &lt;= $callout.graphics.number.limit">
+
+ <xsl:variable name="relative_callout_graphics_path">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$callout.graphics.path"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <img src="{$relative_callout_graphics_path}{$conum}{$callout.graphics.extension}"
+ alt="{$conum}" border="0"/>
+ </xsl:when>
+
+ <xsl:when test="$callout.unicode != 0
+ and $conum &lt;= $callout.unicode.number.limit">
+ <xsl:choose>
+ <xsl:when test="$callout.unicode.start.character = 10102">
+ <xsl:choose>
+ <xsl:when test="$conum = 1">&#10102;</xsl:when>
+ <xsl:when test="$conum = 2">&#10103;</xsl:when>
+ <xsl:when test="$conum = 3">&#10104;</xsl:when>
+ <xsl:when test="$conum = 4">&#10105;</xsl:when>
+ <xsl:when test="$conum = 5">&#10106;</xsl:when>
+ <xsl:when test="$conum = 6">&#10107;</xsl:when>
+ <xsl:when test="$conum = 7">&#10108;</xsl:when>
+ <xsl:when test="$conum = 8">&#10109;</xsl:when>
+ <xsl:when test="$conum = 9">&#10110;</xsl:when>
+ <xsl:when test="$conum = 10">&#10111;</xsl:when>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Don't know how to generate Unicode callouts </xsl:text>
+ <xsl:text>when $callout.unicode.start.character is </xsl:text>
+ <xsl:value-of select="$callout.unicode.start.character"/>
+ </xsl:message>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>(</xsl:text>
+ <xsl:value-of select="$conum"/>
+ <xsl:text>)</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/chunk-common.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/chunk-common.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,176 @@
+<?xml version="1.0"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+
+<!-- Not needed?
+
+Import the HTML chunking stylesheet
+
+<xsl:import
+ href="http://docbook.sourceforge.net/release/xsl/current/html/chunk-common.xsl"/>
+
+-->
+
+<xsl:import href="relative-href.xsl"/>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="*" mode="recursive-chunk-filename">
+ <xsl:param name="recursive" select="false()"/>
+
+ <xsl:variable name="their">
+ <xsl:apply-imports mode="recursive-chunk-filename" select="."/>
+ </xsl:variable>
+
+ <xsl:variable name="basename" select="substring-before( $their, $html.ext )"/>
+ <xsl:choose>
+ <xsl:when test="not($recursive)">
+ <xsl:value-of select="translate( $basename, '.', '/' )"/>
+ <xsl:value-of select="$html.ext"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$basename"/>
+ <xsl:value-of select="'.'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template name="navig.content">
+ <xsl:param name="direction" select="next"/>
+ <xsl:variable name="navtext">
+ <xsl:choose>
+ <xsl:when test="$direction = 'prev'">
+ <xsl:call-template name="gentext.nav.prev"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'next'">
+ <xsl:call-template name="gentext.nav.next"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'up'">
+ <xsl:call-template name="gentext.nav.up"/>
+ </xsl:when>
+ <xsl:when test="$direction = 'home'">
+ <xsl:call-template name="gentext.nav.home"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>xxx</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$navig.graphics != 0">
+ <img>
+ <xsl:attribute name="src">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$navig.graphics.path"/>
+ </xsl:call-template>
+ <xsl:value-of select="$direction"/>
+ <xsl:value-of select="$navig.graphics.extension"/>
+ </xsl:attribute>
+ <xsl:attribute name="alt">
+ <xsl:value-of select="$navtext"/>
+ </xsl:attribute>
+ </img>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$navtext"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<!-- ====================================================================== -->
+
+<xsl:template match="@fileref">
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="."/>
+ <xsl:with-param name="context" select=".."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<xsl:template match="@url">
+ <xsl:choose>
+ <xsl:when test="contains(., ':')">
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>XXX</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>XXX</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!-- overwrites chunk-element-content -->
+
+<xsl:template name="chunk-element-content">
+ <xsl:param name="prev"/>
+ <xsl:param name="next"/>
+ <xsl:param name="nav.context"/>
+ <xsl:param name="content">
+ <xsl:apply-imports/>
+ </xsl:param>
+
+ <xsl:call-template name="user.preroot"/>
+
+ <html>
+ <xsl:call-template name="html.head">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ </xsl:call-template>
+
+ <body>
+ <xsl:call-template name="body.attributes"/>
+ <xsl:call-template name="user.header.navigation"/>
+
+ <xsl:call-template name="header.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.header.content"/>
+
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <xsl:copy-of select="$content"/>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+
+ <xsl:call-template name="user.footer.content"/>
+
+ <xsl:call-template name="footer.navigation">
+ <xsl:with-param name="prev" select="$prev"/>
+ <xsl:with-param name="next" select="$next"/>
+ <xsl:with-param name="nav.context" select="$nav.context"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="user.footer.navigation"/>
+ </body>
+ </html>
+</xsl:template>
+
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/docbook-layout.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/docbook-layout.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,213 @@
+<?xml version = "1.0" encoding = "utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+
+<xsl:stylesheet version = "1.0"
+ xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
+>
+ <!-- needed for calsTable template -->
+
+ <!-- not needed ?
+ <xsl:import
+ href="http://docbook.sourceforge.net/release/xsl/current/html/formal.xsl"/>
+-->
+ <!--
+ Override the behaviour of some DocBook elements for better
+ integration with the new look & feel.
+ -->
+
+ <xsl:template match = "programlisting[ancestor::informaltable]">
+ <pre class = "table-{name(.)}"><xsl:apply-templates/></pre>
+ </xsl:template>
+
+ <xsl:template match = "refsynopsisdiv">
+ <h2 class = "{name(.)}-title">Synopsis</h2>
+ <div class = "{name(.)}"><xsl:apply-templates/></div>
+ </xsl:template>
+
+ <!-- table: remove border = '1' -->
+
+ <xsl:template match = "table|informaltable">
+ <xsl:choose>
+ <xsl:when test = "self::table and tgroup|mediaobject|graphic">
+ <xsl:apply-imports/>
+ </xsl:when><xsl:when test = "self::informaltable and tgroup|mediaobject|graphic">
+ <xsl:call-template name = "informal.object">
+ <xsl:with-param name = "class"><xsl:choose>
+ <xsl:when test = "@tabstyle">
+ <xsl:value-of select = "@tabstyle"/>
+ </xsl:when><xsl:otherwise>
+ <xsl:value-of select = "local-name(.)"/>
+ </xsl:otherwise>
+ </xsl:choose></xsl:with-param>
+ </xsl:call-template>
+ </xsl:when><xsl:otherwise>
+ <table class = "table"><xsl:copy-of select = "@*[not(local-name(.)='border')]"/>
+ <xsl:call-template name = "htmlTable"/>
+ </table>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match = "tgroup" name = "tgroup">
+ <xsl:variable name="summary"><xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'table-summary'"/>
+ </xsl:call-template></xsl:variable>
+
+ <xsl:variable name="cellspacing"><xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
+ <xsl:with-param name="attribute" select="'cellspacing'"/>
+ </xsl:call-template></xsl:variable>
+
+ <xsl:variable name="cellpadding"><xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="processing-instruction('dbhtml')[1]"/>
+ <xsl:with-param name="attribute" select="'cellpadding'"/>
+ </xsl:call-template></xsl:variable>
+
+ <table class = "table">
+ <xsl:choose>
+ <xsl:when test="../textobject/phrase">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="../textobject/phrase"/>
+ </xsl:attribute>
+ </xsl:when><xsl:when test="$summary != ''">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="$summary"/>
+ </xsl:attribute>
+ </xsl:when><xsl:when test="../title">
+ <xsl:attribute name="summary">
+ <xsl:value-of select="string(../title)"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise/>
+ </xsl:choose><xsl:if test="$cellspacing != '' or $html.cellspacing != ''">
+ <xsl:attribute name="cellspacing"><xsl:choose>
+ <xsl:when test="$cellspacing != ''"><xsl:value-of select="$cellspacing"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="$html.cellspacing"/></xsl:otherwise>
+ </xsl:choose></xsl:attribute>
+ </xsl:if><xsl:if test="$cellpadding != '' or $html.cellpadding != ''">
+ <xsl:attribute name="cellpadding"><xsl:choose>
+ <xsl:when test="$cellpadding != ''"><xsl:value-of select="$cellpadding"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="$html.cellpadding"/></xsl:otherwise>
+ </xsl:choose></xsl:attribute>
+ </xsl:if><xsl:if test="../@pgwide=1">
+ <xsl:attribute name="width">100%</xsl:attribute>
+ </xsl:if>
+
+ <xsl:variable name="colgroup">
+ <colgroup><xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="@cols"/>
+ </xsl:call-template></colgroup>
+ </xsl:variable>
+
+ <xsl:variable name="explicit.table.width"><xsl:call-template name="dbhtml-attribute">
+ <xsl:with-param name="pis" select="../processing-instruction('dbhtml')[1]"/>
+ <xsl:with-param name="attribute" select="'table-width'"/>
+ </xsl:call-template></xsl:variable>
+
+ <xsl:variable name="table.width"><xsl:choose>
+ <xsl:when test="$explicit.table.width != ''">
+ <xsl:value-of select="$explicit.table.width"/>
+ </xsl:when><xsl:when test="$default.table.width = ''">
+ <xsl:text>100%</xsl:text>
+ </xsl:when><xsl:otherwise>
+ <xsl:value-of select="$default.table.width"/>
+ </xsl:otherwise>
+ </xsl:choose></xsl:variable>
+
+ <xsl:if test="$default.table.width != '' or $explicit.table.width != ''">
+ <xsl:attribute name="width"><xsl:choose>
+ <xsl:when test="contains($table.width, '%')">
+ <xsl:value-of select="$table.width"/>
+ </xsl:when><xsl:when test="$use.extensions != 0 and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:convertLength')">
+ <xsl:value-of select="stbl:convertLength($table.width)"/>
+ </xsl:when><xsl:when test="function-available('xtbl:convertLength')">
+ <xsl:value-of select="xtbl:convertLength($table.width)"/>
+ </xsl:when><xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No convertLength function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when><xsl:otherwise>
+ <xsl:value-of select="$table.width"/>
+ </xsl:otherwise>
+ </xsl:choose></xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$use.extensions != 0 and $tablecolumns.extension != 0">
+ <xsl:choose>
+ <xsl:when test="function-available('stbl:adjustColumnWidths')">
+ <xsl:copy-of select="stbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when><xsl:when test="function-available('xtbl:adjustColumnWidths')">
+ <xsl:copy-of select="xtbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when><xsl:when test="function-available('ptbl:adjustColumnWidths')">
+ <xsl:copy-of select="ptbl:adjustColumnWidths($colgroup)"/>
+ </xsl:when><xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>No adjustColumnWidths function available.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when><xsl:otherwise>
+ <xsl:copy-of select="$colgroup"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:apply-templates select="thead"/>
+ <xsl:apply-templates select="tfoot"/>
+ <xsl:apply-templates select="tbody"/>
+
+ <xsl:if test=".//footnote"><tbody class="footnotes">
+ <tr><td colspan="{@cols}">
+ <xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/>
+ </td></tr>
+ </tbody></xsl:if>
+ </table>
+ </xsl:template>
+
+ <!-- table of contents
+
+ The standard Docbook template selects, amoung others,
+ the 'refentry' element for inclusion in TOC. In some
+ cases, this creates empty TOC. The most possible reason
+ is that there's 'refentry' element without 'refentrytitle',
+ but it's a mistery why it occurs. Even if we fix that
+ problem, we'll get non-empty TOC where no TOC is desired
+ (e.g. for section corresponding to each header file in
+ library doc). So, don't bother for now.
+ -->
+
+ <xsl:template name="section.toc">
+ <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc.title.p" select="true()"/>
+
+ <xsl:call-template name="make.toc">
+ <xsl:with-param name="toc-context" select="$toc-context"/>
+ <xsl:with-param name="toc.title.p" select="$toc.title.p"/>
+ <xsl:with-param name="nodes" select="
+ section|sect1|sect2|sect3|sect4|sect5|
+ bridgehead[$bridgehead.in.toc != 0]
+ "/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- When there is both a title and a caption for a table, only use the
+ title. -->
+ <xsl:template match="table" mode="title.markup">
+ <xsl:param name="allow-anchors" select="0"/>
+ <xsl:apply-templates select="(title|caption)[1]" mode="title.markup">
+ <xsl:with-param name="allow-anchors" select="$allow-anchors"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/docbook.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/docbook.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,477 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ version="1.0">
+ <xsl:include href="reference.xsl"/>
+
+ <xsl:output method="xml"
+ doctype-public="-//OASIS//DTD DocBook XML V4.2//EN"
+ doctype-system="http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"/>
+
+ <!-- The maximum number of columns allowed in preformatted text -->
+ <xsl:param name="max-columns" select="78"/>
+
+ <!-- The root of the Boost directory -->
+ <xsl:param name="boost.root" select="'../..'"/>
+ <xsl:param name="boost.header.root" select="$boost.root"/>
+
+ <!-- A space-separated list of libraries to include in the
+ output. If this list is empty, all libraries will be included. -->
+ <xsl:param name="boost.include.libraries" select="''"/>
+
+ <!-- A space-separated list of xml elements in the input file for which
+ whitespace should be preserved -->
+ <xsl:preserve-space elements="*"/>
+
+ <xsl:template match="library-reference">
+ <xsl:choose>
+ <xsl:when test="ancestor::library-reference">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <section>
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="ancestor::library/attribute::id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="ancestor::library/attribute::id"/>
+ <xsl:text>.reference</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="not(title)">
+ <title>
+ <xsl:text>Reference</xsl:text>
+ </title>
+ </xsl:if>
+
+ <xsl:if test="concept">
+ <section>
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@id"/>
+ <xsl:text>.concepts</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="ancestor::library/attribute::id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="ancestor::library/attribute::id"/>
+ <xsl:text>.concepts</xsl:text>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <title>Concepts</title>
+
+ <itemizedlist>
+ <xsl:for-each select="concept">
+ <listitem>
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="@name"/>
+ </xsl:call-template>
+ </listitem>
+ </xsl:for-each>
+ </itemizedlist>
+ </section>
+ </xsl:if>
+
+ <xsl:apply-templates/>
+ </section>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="header">
+ <xsl:if test="*">
+ <section>
+ <xsl:attribute name="id">
+ <xsl:call-template name="generate.id"/>
+ </xsl:attribute>
+
+ <title>
+ <xsl:text>Header &lt;</xsl:text>
+ <ulink>
+ <xsl:attribute name="url">
+ <xsl:value-of select="$boost.header.root"/>
+ <xsl:text>/</xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:attribute>
+ <xsl:value-of select="@name"/>
+ </ulink>
+ <xsl:text>&gt;</xsl:text>
+ </title>
+
+ <xsl:apply-templates select="para|section" mode="annotation"/>
+
+ <xsl:if test="macro">
+ <xsl:call-template name="synopsis">
+ <xsl:with-param name="text">
+ <xsl:apply-templates mode="synopsis" select="macro">
+ <xsl:with-param name="indentation" select="0"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="descendant::class|descendant::struct|descendant::union
+ |descendant::function|descendant::free-function-group
+ |descendant::overloaded-function|descendant::enum
+ |descendant::typedef">
+ <xsl:call-template name="synopsis">
+ <xsl:with-param name="text">
+ <xsl:apply-templates mode="synopsis"
+ select="namespace|class|struct|union
+ |function|free-function-group
+ |overloaded-function|enum
+ |typedef">
+ <xsl:with-param name="indentation" select="0"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:apply-templates mode="namespace-reference"/>
+ </section>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="header" mode="generate.id">
+ <xsl:text>header.</xsl:text>
+ <xsl:value-of select="translate(@name, '/','.')"/>
+ </xsl:template>
+
+ <xsl:template match="*" mode="passthrough">
+ <xsl:copy-of select="."/>
+ </xsl:template>
+
+ <!-- Syntax highlighting -->
+ <xsl:template name="highlight-keyword">
+ <xsl:param name="keyword"/>
+ <xsl:choose>
+ <xsl:when test="$boost.syntax.highlight='1'">
+ <emphasis role="bold"><xsl:value-of select="$keyword"/></emphasis>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$keyword"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="highlight-comment">
+ <xsl:param name="text"/>
+ <emphasis><xsl:copy-of select="$text"/></emphasis>
+ </xsl:template>
+
+ <xsl:template name="monospaced">
+ <xsl:param name="text"/>
+ <computeroutput><xsl:value-of select="$text"/></computeroutput>
+ </xsl:template>
+
+ <!-- Linking -->
+ <xsl:template name="internal-link">
+ <xsl:param name="to"/>
+ <xsl:param name="text"/>
+ <xsl:param name="highlight" select="false()"/>
+
+ <link linkend="{$to}">
+ <xsl:if test="$highlight">
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="$text"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="not($highlight)">
+ <xsl:value-of select="string($text)"/>
+ </xsl:if>
+ </link>
+ </xsl:template>
+
+ <xsl:template name="anchor">
+ <xsl:param name="to"/>
+ <xsl:param name="text"/>
+ <xsl:param name="highlight" select="false()"/>
+
+ <anchor id="{$to}"/>
+ <xsl:if test="$highlight">
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="$text"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="not($highlight)">
+ <xsl:value-of select="$text"/>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="link-or-anchor">
+ <xsl:param name="to"/>
+ <xsl:param name="text"/>
+
+ <!-- True if we should create an anchor, otherwise we will create
+ a link. If you require more control (e.g., with the possibility of
+ having no link or anchor), set link-type instead: if present, it
+ takes precedence. -->
+ <xsl:param name="is-anchor"/>
+
+ <!-- 'anchor', 'link', or 'none' -->
+ <xsl:param name="link-type">
+ <xsl:choose>
+ <xsl:when test="$is-anchor">
+ <xsl:text>anchor</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>link</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <xsl:param name="highlight" select="false()"/>
+
+ <xsl:choose>
+ <xsl:when test="$link-type='anchor'">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="to" select="$to"/>
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$link-type='link'">
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to" select="$to"/>
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$link-type='none'">
+ <xsl:if test="$highlight">
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="$text"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="not($highlight)">
+ <xsl:value-of select="$text"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+Error: XSL template 'link-or-anchor' called with invalid link-type '<xsl:value-of select="$link-type"/>'
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="separator"/>
+
+ <xsl:template name="reference-documentation">
+ <xsl:param name="name"/>
+ <xsl:param name="refname"/>
+ <xsl:param name="purpose"/>
+ <xsl:param name="anchor"/>
+ <xsl:param name="synopsis"/>
+ <xsl:param name="text"/>
+
+ <refentry id="{$anchor}">
+ <refmeta>
+ <refentrytitle><xsl:value-of select="$name"/></refentrytitle>
+ <manvolnum>3</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname><xsl:value-of select="$refname"/></refname>
+ <refpurpose>
+ <xsl:apply-templates mode="annotation" select="$purpose"/>
+ </refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <synopsis>
+ <xsl:copy-of select="$synopsis"/>
+ </synopsis>
+ </refsynopsisdiv>
+ <xsl:if test="not(string($text)='')">
+ <refsect1>
+ <title>Description</title>
+ <xsl:copy-of select="$text"/>
+ </refsect1>
+ </xsl:if>
+ </refentry>
+ </xsl:template>
+
+ <xsl:template name="member-documentation">
+ <xsl:param name="name"/>
+ <xsl:param name="text"/>
+
+ <refsect2>
+ <title><xsl:copy-of select="$name"/></title>
+ <xsl:copy-of select="$text"/>
+ </refsect2>
+ </xsl:template>
+
+ <xsl:template name="preformatted">
+ <xsl:param name="text"/>
+
+ <literallayout class="monospaced">
+ <xsl:copy-of select="$text"/>
+ </literallayout>
+ </xsl:template>
+
+ <xsl:template name="synopsis">
+ <xsl:param name="text"/>
+
+ <synopsis>
+ <xsl:copy-of select="$text"/>
+ </synopsis>
+ </xsl:template>
+
+ <!-- Fallthrough for DocBook elements -->
+ <xsl:template match="*">
+ <xsl:element name="{name(.)}">
+ <xsl:for-each select="./@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='last-revision'">
+ <xsl:attribute
+ name="rev:last-revision"
+ namespace="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="code">
+ <computeroutput>
+ <xsl:apply-templates mode="annotation"/>
+ </computeroutput>
+ </xsl:template>
+
+ <xsl:template match="bold">
+ <emphasis role="bold">
+ <xsl:apply-templates mode="annotation"/>
+ </emphasis>
+ </xsl:template>
+
+ <xsl:template match="library">
+ <xsl:if test="not(@html-only = 1) and
+ ($boost.include.libraries='' or
+ contains($boost.include.libraries, @id))">
+ <chapter>
+ <xsl:attribute name="id">
+ <xsl:choose>
+ <xsl:when test="@id">
+ <xsl:value-of select="@id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.id"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:if test="@last-revision">
+ <xsl:attribute
+ name="rev:last-revision"
+ namespace="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision">
+ <xsl:value-of select="@last-revision"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </chapter>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="chapter">
+ <xsl:if test="$boost.include.libraries=''">
+ <chapter>
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+
+ <xsl:apply-templates/>
+ </chapter>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="boostbook">
+ <book><xsl:apply-templates/></book>
+ </xsl:template>
+
+ <xsl:template match="programlisting">
+ <programlisting><xsl:apply-templates/></programlisting>
+ </xsl:template>
+
+ <!-- These DocBook elements have special meaning. Use the annotation mode -->
+ <xsl:template match="classname|methodname|functionname|enumname|
+ macroname|headername">
+ <computeroutput>
+ <xsl:apply-templates select="." mode="annotation"/>
+ </computeroutput>
+ </xsl:template>
+
+ <xsl:template match="libraryname|conceptname">
+ <xsl:apply-templates select="." mode="annotation"/>
+ </xsl:template>
+
+ <xsl:template match="description">
+ <xsl:apply-templates mode="annotation"/>
+ </xsl:template>
+
+ <!-- Swallow using-namespace and using-class directives along with
+ last-revised elements -->
+ <xsl:template match="using-namespace|using-class|last-revised"/>
+
+ <!-- If there is no "namespace-reference" mode, forward to
+ "reference" mode -->
+ <xsl:template match="*" mode="namespace-reference">
+ <xsl:apply-templates select="." mode="reference"/>
+ </xsl:template>
+
+ <!-- Make the various blocks immediately below a "part" be
+ "chapter"-s. Must also take into account turning
+ chapters within chpaters into sections. -->
+ <xsl:template match="part/part|part/article">
+ <chapter>
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </chapter>
+ </xsl:template>
+ <xsl:template match="part/part/partinfo|part/article/articleinfo">
+ <chapterinfo><xsl:apply-templates/></chapterinfo>
+ </xsl:template>
+ <xsl:template match="part/part/chapter">
+ <section>
+ <xsl:for-each select="./@*">
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:for-each>
+ <xsl:apply-templates/>
+ </section>
+ </xsl:template>
+ <xsl:template match="part/part/chapter/chapterinfo">
+ <sectioninfo><xsl:apply-templates/></sectioninfo>
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/error.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/error.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+ <xsl:template name="print.warning.context">
+ <xsl:message>
+ <xsl:text> In </xsl:text>
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:message>
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/footer.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/footer.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2007 Matias Capeletto
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+
+<!--
+ Footer stylesheet
+ -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
+ version="1.0">
+
+<xsl:import href="navbar.xsl"/>
+
+ <!--
+ The style of the html pages
+ *website - like the beta.boost.org
+ textlinks - old logo and links style
+ -->
+ <xsl:param name = "page.style" select = "'website'"/>
+
+ <xsl:template name = "month.name.from.number" >
+ <xsl:param name = "month"/>
+ <xsl:choose>
+ <xsl:when test="$month=1">January</xsl:when>
+ <xsl:when test="$month=2">February</xsl:when>
+ <xsl:when test="$month=3">March</xsl:when>
+ <xsl:when test="$month=4">April</xsl:when>
+ <xsl:when test="$month=5">May</xsl:when>
+ <xsl:when test="$month=6">June</xsl:when>
+ <xsl:when test="$month=7">July</xsl:when>
+ <xsl:when test="$month=8">August</xsl:when>
+ <xsl:when test="$month=9">September</xsl:when>
+ <xsl:when test="$month=10">October</xsl:when>
+ <xsl:when test="$month=11">November</xsl:when>
+ <xsl:when test="$month=12">December</xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <xsl:template name="format.cvs.revision">
+ <xsl:param name="text"/>
+
+ <!-- Remove the "$Date: " -->
+ <xsl:variable name="text.noprefix"
+ select="substring-after($text, '$Date: ')"/>
+
+ <!-- Grab the year -->
+ <xsl:variable name="year" select="substring-before($text.noprefix, '/')"/>
+ <xsl:variable name="text.noyear"
+ select="substring-after($text.noprefix, '/')"/>
+
+ <!-- Grab the month -->
+ <xsl:variable name="month" select="substring-before($text.noyear, '/')"/>
+ <xsl:variable name="text.nomonth"
+ select="substring-after($text.noyear, '/')"/>
+
+ <!-- Grab the year -->
+ <xsl:variable name="day" select="substring-before($text.nomonth, ' ')"/>
+ <xsl:variable name="text.noday"
+ select="substring-after($text.nomonth, ' ')"/>
+
+ <!-- Get the time -->
+ <xsl:variable name="time" select="substring-before($text.noday, ' ')"/>
+
+ <xsl:variable name="month.name">
+ <xsl:call-template name = "month.name.from.number" >
+ <xsl:with-param name = "month" select="$month" />
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="concat($month.name, ' ', $day, ', ', $year, ' at ',
+ $time, ' GMT')"/>
+ </xsl:template>
+
+
+ <xsl:template name="format.svn.revision">
+ <xsl:param name="text"/>
+
+ <!-- Remove the "$Date: " -->
+ <xsl:variable name="text.noprefix"
+ select="substring-after($text, '$Date: ')"/>
+
+ <!-- Grab the year -->
+ <xsl:variable name="year" select="substring-before($text.noprefix, '-')"/>
+ <xsl:variable name="text.noyear"
+ select="substring-after($text.noprefix, '-')"/>
+
+ <!-- Grab the month -->
+ <xsl:variable name="month" select="substring-before($text.noyear, '-')"/>
+ <xsl:variable name="text.nomonth"
+ select="substring-after($text.noyear, '-')"/>
+
+ <!-- Grab the year -->
+ <xsl:variable name="day" select="substring-before($text.nomonth, ' ')"/>
+ <xsl:variable name="text.noday"
+ select="substring-after($text.nomonth, ' ')"/>
+
+ <!-- Get the time -->
+ <xsl:variable name="time" select="substring-before($text.noday, ' ')"/>
+ <xsl:variable name="text.notime"
+ select="substring-after($text.noday, ' ')"/>
+
+ <!-- Get the timezone -->
+ <xsl:variable name="timezone" select="substring-before($text.notime, ' ')"/>
+
+ <xsl:variable name="month.name">
+ <xsl:call-template name = "month.name.from.number" >
+ <xsl:with-param name = "month" select="$month" />
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:value-of select="concat($month.name, ' ', $day, ', ', $year, ' at ',
+ $time, ' ', $timezone)"/>
+ </xsl:template>
+
+
+ <xsl:template match="copyright" mode="boost.footer">
+ <!--xsl:if test="position() &gt; 1"-->
+ <p>
+ <xsl:call-template name="gentext">
+ <xsl:with-param name="key" select="'Copyright'"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="dingbat">
+ <xsl:with-param name="dingbat">copyright</xsl:with-param>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:call-template name="copyright.years">
+ <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
+ <xsl:with-param name="single.year.ranges"
+ select="$make.single.year.ranges"/>
+ </xsl:call-template>
+ <xsl:call-template name="gentext.space"/>
+ <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+ </p>
+ </xsl:template>
+
+
+ <xsl:template name= "find.revised.time" >
+ <xsl:variable name="revision-nodes"
+ select="ancestor-or-self::*
+ [not (attribute::rev:last-revision='')]"/>
+
+ <xsl:if test="count($revision-nodes) &gt; 0">
+ <xsl:variable name="revision-node"
+ select="$revision-nodes[last()]"/>
+ <xsl:variable name="revision-text">
+ <xsl:value-of
+ select="normalize-space($revision-node/attribute::rev:last-revision)"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string-length($revision-text) &gt; 0">
+ <xsl:choose>
+ <xsl:when test="contains($revision-text, '/')">
+ <xsl:call-template name="format.cvs.revision">
+ <xsl:with-param name="text" select="$revision-text"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="format.svn.revision">
+ <xsl:with-param name="text" select="$revision-text"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>unknown</xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
+
+ <!-- footer (overwrites docbook footer.navigation template -->
+
+ <xsl:template name = "footer.navigation">
+ <xsl:param name = "prev" select = "/foo"/>
+ <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "nav.context"/>
+
+ <xsl:choose>
+ <xsl:when test = "$page.style = 'website'">
+
+ <!-- Navigation -->
+
+ <xsl:call-template name="boost.navbar">
+ <xsl:with-param name = "prev" select = "$prev"/>
+ <xsl:with-param name = "next" select = "$next"/>
+ <xsl:with-param name = "nav.context" select = "$nav.context"/>
+ </xsl:call-template>
+
+ <!-- website footer -->
+
+ <div id="footer">
+ <div id="footer-left">
+ <xsl:variable name="revised.time">
+ <xsl:call-template name = "find.revised.time"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$revised.time='unknown'">
+ <!-- unknown revised time, skip revised time -->
+ </xsl:when>
+ <xsl:otherwise>
+ <div id="revised">Revised: <xsl:value-of select="$revised.time"/></div>
+ </xsl:otherwise>
+ </xsl:choose>
+ <div id="copyright">
+ <xsl:apply-templates select="ancestor::*/*/copyright"
+ mode="boost.footer"/>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ <a href="/LICENSE_1_0.txt"
+ class="internal">Boost Software License, Version 1.0</a>.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ <a href="http://validator.w3.org/check?uri=referer"
+ class="external">XHTML 1.0</a>
+ </p>
+ <p id="banner-css">
+ <a href="http://jigsaw.w3.org/css-validator/check/referer"
+ class="external">CSS</a>
+ </p>
+ <p id="banner-sourceforge">
+ <a href="http://sourceforge.net"
+ class="external">SourceForge</a>
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+
+
+ <!-- Old style, textlinks -->
+
+ </xsl:when>
+ <xsl:when test = "$page.style = 'textlinks'">
+ <xsl:call-template name="footer.content.textlinks"/>
+ <hr />
+ <xsl:call-template name="boost.navbar">
+ <xsl:with-param name = "prev" select = "$prev"/>
+ <xsl:with-param name = "next" select = "$next"/>
+ <xsl:with-param name = "nav.context" select = "$nav.context"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <!-- Old footer ( was user.footer.content in html.xsl ) -->
+
+ <xsl:template name="footer.content.textlinks">
+ <table width="100%">
+ <tr>
+ <td align="left">
+ <xsl:variable name="revised.time">
+ <xsl:call-template name = "find.revised.time"/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$revised.time='unknown'">
+ <!-- unknown revised time, skip revised time -->
+ </xsl:when>
+ <xsl:otherwise>
+ <small>Last revised: <xsl:value-of select="$revised.time"/>
+ </small>
+ </xsl:otherwise>
+ </xsl:choose>
+ </td>
+ <td align="right">
+ <small>
+ <xsl:apply-templates select="ancestor::*/*/copyright"
+ mode="boost.footer"/>
+ </small>
+ </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+
+</xsl:stylesheet>
\ No newline at end of file

Added: sandbox/doc_test/XSL/function.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/function.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,1109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:strip-space elements="requires effects postconditions returns throws
+ complexity notes rationale purpose"/>
+
+ <!-- When true, the stylesheet will emit compact definitions of
+ functions when the function does not have any detailed
+ description. -->
+ <xsl:param name="boost.compact.function">1</xsl:param>
+
+ <!-- The longest type length that is considered "short" for the
+ layout of function return types. When the length of the result type
+ and any storage specifiers is greater than this length, they will be
+ placed on a separate line from the function name and parameters
+ unless everything fits on a single line. -->
+ <xsl:param name="boost.short.result.type">12</xsl:param>
+
+ <!-- Display a function declaration -->
+ <xsl:template name="function">
+ <xsl:param name="indentation"/>
+ <xsl:param name="is-reference"/>
+
+ <!-- Whether or not we should include parameter names in the output -->
+ <xsl:param name="include-names" select="$is-reference"/>
+
+ <!-- What type of link the function name should have. This shall
+ be one of 'anchor' (the function output will be the target of
+ links), 'link' (the function output will link to a definition), or
+ 'none' (the function output will not be either a link or a link
+ target) -->
+ <xsl:param name="link-type">
+ <xsl:choose>
+ <xsl:when test="$is-reference">
+ <xsl:text>anchor</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>link</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <!-- The id we should link to or anchor as -->
+ <xsl:param name="link-to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:param>
+
+ <!-- If we are printing a constructor -->
+ <xsl:param name="constructor-for"/>
+
+ <!-- If we are printing a destructor -->
+ <xsl:param name="destructor-for"/>
+
+ <!-- If we are printing a copy assignment operator -->
+ <xsl:param name="copy-assign-for"/>
+
+ <!-- The name of this function -->
+ <xsl:param name="name" select="@name"/>
+
+ <!-- True if this is the function's separate documentation -->
+ <xsl:param name="standalone" select="false()"/>
+
+ <!-- True if we should suppress the template header -->
+ <xsl:param name="suppress-template" select="false()"/>
+
+ <!-- Calculate the specifiers -->
+ <xsl:variable name="specifiers">
+ <xsl:if test="@specifiers">
+ <xsl:value-of select="concat(@specifiers, ' ')"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <!-- Calculate the type -->
+ <xsl:variable name="type">
+ <xsl:value-of select="$specifiers"/>
+
+ <xsl:choose>
+ <!-- Conversion operators have an empty type, because the return
+ type is part of the name -->
+ <xsl:when test="$name='conversion-operator'"/>
+
+ <!-- Constructors and destructors have no return type -->
+ <xsl:when test="$constructor-for or $destructor-for"/>
+
+ <!-- Copy assignment operators return a reference to the class
+ they are in, unless another type has been explicitly
+ provided in the element. -->
+ <xsl:when test="$copy-assign-for and not(type)">
+ <xsl:value-of select="concat($copy-assign-for, '&amp; ')"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates select="type" mode="annotation"/>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Build the function name with return type -->
+ <xsl:variable name="function-name">
+ <xsl:choose>
+ <xsl:when test="$constructor-for">
+ <xsl:value-of select="$constructor-for"/>
+ </xsl:when>
+ <xsl:when test="$destructor-for">
+ <xsl:value-of select="concat('~',$destructor-for)"/>
+ </xsl:when>
+ <xsl:when test="$copy-assign-for">
+ <xsl:value-of select="'operator='"/>
+ </xsl:when>
+ <xsl:when test="$name='conversion-operator'">
+ <xsl:text>operator </xsl:text>
+ <xsl:apply-templates select="type" mode="annotation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="not ($standalone) or
+ (local-name(.)='signature' and (position() &gt; 1))
+ or $suppress-template">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ <!-- Indent this declaration -->
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+
+ <!-- Build the template header -->
+ <xsl:variable name="template-length">
+ <xsl:choose>
+ <xsl:when test="$suppress-template">
+ 0
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="template.synopsis.length"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Build a full parameter string (without line breaks) -->
+ <xsl:variable name="param-string">
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="function-parameters">
+ <xsl:with-param name="include-names" select="$include-names"/>
+ <xsl:with-param name="wrap" select="false()"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ </xsl:variable>
+
+ <!-- Build the text that follows the declarator-->
+ <xsl:variable name="postdeclarator">
+ <xsl:if test="@cv">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@cv"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <!-- Build the full declaration text -->
+ <xsl:variable name="decl-string"
+ select="concat($type, $function-name, $param-string, $postdeclarator)"/>
+ <xsl:variable name="end-column"
+ select="$template-length + string-length($decl-string) + $indentation"/>
+
+ <xsl:choose>
+ <!-- Check if we should put the template header on its own line to
+ save horizontal space. -->
+ <xsl:when test="($template-length &gt; 0) and
+ ($end-column &gt; $max-columns)">
+ <!-- Emit template header on its own line -->
+ <xsl:apply-templates select="template" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+
+ <!-- Emit the rest of the function declaration (without the
+ template header) indented two extra spaces. -->
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ <xsl:with-param name="is-reference" select="$is-reference"/>
+ <xsl:with-param name="include-names" select="$include-names"/>
+ <xsl:with-param name="link-type" select="$link-type"/>
+ <xsl:with-param name="link-to" select="$link-to"/>
+ <xsl:with-param name="constructor-for" select="$constructor-for"/>
+ <xsl:with-param name="destructor-for" select="$destructor-for"/>
+ <xsl:with-param name="copy-assign-for" select="$copy-assign-for"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="standalone" select="$standalone"/>
+ <xsl:with-param name="suppress-template" select="true()"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Check if we can put the entire declaration on a single
+ line. -->
+ <xsl:when test="not($end-column &gt; $max-columns)">
+ <!-- Emit template header, if not suppressed -->
+ <xsl:if test="not($suppress-template)">
+ <xsl:apply-templates select="template" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="wrap" select="false()"/>
+ <xsl:with-param name="highlight" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <!-- Emit specifiers -->
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="$specifiers"/>
+ </xsl:call-template>
+
+ <!-- Emit type, if any -->
+ <xsl:choose>
+ <!-- Conversion operators have an empty type, because the return
+ type is part of the name -->
+ <xsl:when test="$name='conversion-operator'"/>
+
+ <!-- Constructors and destructors have no return type -->
+ <xsl:when test="$constructor-for or $destructor-for"/>
+
+ <!-- Copy assignment operators return a reference to the class
+ they are in, unless another type has been explicitly
+ provided in the element. -->
+ <xsl:when test="$copy-assign-for and not(type)">
+ <xsl:value-of select="concat($copy-assign-for, '&amp; ')"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates select="type" mode="highlight"/>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="link-or-anchor">
+ <xsl:with-param name="to" select="$link-to"/>
+ <xsl:with-param name="text" select="$function-name"/>
+ <xsl:with-param name="link-type" select="$link-type"/>
+ <xsl:with-param name="highlight" select="true()"/>
+ </xsl:call-template>
+
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="function-parameters">
+ <xsl:with-param name="include-names" select="$include-names"/>
+ <xsl:with-param name="indentation"
+ select="$indentation + $template-length + string-length($type)
+ + string-length($function-name) + 1"/>
+ <xsl:with-param name="final" select="true()"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="$postdeclarator"/>
+ </xsl:call-template>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+
+ <!-- This declaration will take multiple lines -->
+ <xsl:otherwise>
+ <!-- Emit specifiers -->
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="$specifiers"/>
+ </xsl:call-template>
+
+ <!-- Emit type, if any -->
+ <xsl:choose>
+ <!-- Conversion operators have an empty type, because the return
+ type is part of the name -->
+ <xsl:when test="$name='conversion-operator'"/>
+
+ <!-- Constructors and destructors have no return type -->
+ <xsl:when test="$constructor-for or $destructor-for"/>
+
+ <!-- Copy assignment operators return a reference to the class
+ they are in, unless another type has been explicitly
+ provided in the element. -->
+ <xsl:when test="$copy-assign-for and not(type)">
+ <xsl:value-of select="concat($copy-assign-for, '&amp; ')"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:apply-templates select="type" mode="highlight"/>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="string-length($type) &gt; $boost.short.result.type">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- Determine how many columns the type and storage
+ specifiers take on the same line as the function name. -->
+ <xsl:variable name="type-length">
+ <xsl:choose>
+ <xsl:when test="string-length($type) &gt; $boost.short.result.type">
+ 0
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string-length($type)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="link-or-anchor">
+ <xsl:with-param name="to" select="$link-to"/>
+ <xsl:with-param name="text" select="$function-name"/>
+ <xsl:with-param name="link-type" select="$link-type"/>
+ <xsl:with-param name="highlight" select="true()"/>
+ </xsl:call-template>
+ <xsl:text>(</xsl:text>
+ <xsl:call-template name="function-parameters">
+ <xsl:with-param name="include-names" select="$include-names"/>
+ <xsl:with-param name="indentation"
+ select="$indentation + $type-length
+ + string-length($function-name) + 1"/>
+ <xsl:with-param name="final" select="true()"/>
+ </xsl:call-template>
+ <xsl:text>)</xsl:text>
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="$postdeclarator"/>
+ </xsl:call-template>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Synopsis of function parameters, e.g., "(const T&, int x = 5)" -->
+ <xsl:template name="function-parameters">
+ <!-- Indentation level of this parameter list -->
+ <xsl:param name="indentation"/>
+
+ <!-- True if we should include parameter names -->
+ <xsl:param name="include-names" select="true()"/>
+
+ <!-- True if we should wrap function parameters to the next line -->
+ <xsl:param name="wrap" select="true()"/>
+
+ <!-- True if we are printing the final output -->
+ <xsl:param name="final" select="false()"/>
+
+ <!-- Internal: The prefix to emit before a parameter -->
+ <xsl:param name="prefix" select="''"/>
+
+ <!-- Internal: The list of parameters -->
+ <xsl:param name="parameters" select="parameter"/>
+
+ <!-- Internal: The column we are on -->
+ <xsl:param name="column" select="$indentation"/>
+
+ <!-- Internal: Whether this is the first parameter on this line or not -->
+ <xsl:param name="first-on-line" select="true()"/>
+
+ <xsl:if test="$parameters">
+ <!-- Information for this parameter -->
+ <xsl:variable name="parameter" select="$parameters[position()=1]"/>
+ <xsl:variable name="name">
+ <xsl:if test="$include-names and $parameter/@name != ''">
+ <xsl:text> </xsl:text><xsl:value-of select="$parameter/@name"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:variable name="type" select="string($parameter/paramtype)"/>
+
+ <xsl:variable name="default">
+ <xsl:choose>
+ <xsl:when test="$parameter/@default">
+ <xsl:text> = </xsl:text>
+ <xsl:value-of select="$parameter/@default"/>
+ </xsl:when>
+ <xsl:when test="$parameter/default">
+ <xsl:text> = </xsl:text>
+ <xsl:choose>
+ <xsl:when test="$final">
+ <xsl:apply-templates
+ select="$parameter/default/*|$parameter/default/text()"
+ mode="annotation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string($parameter/default)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="text" select="concat($type, $name, $default)"/>
+
+ <xsl:variable name="end-column"
+ select="$column + string-length($prefix) + string-length($text)"/>
+
+ <xsl:choose>
+ <!-- Parameter goes on this line -->
+ <xsl:when test="$first-on-line or ($end-column &lt; $max-columns)
+ or not($wrap)">
+ <xsl:choose>
+ <xsl:when test="$final">
+ <xsl:value-of select="$prefix"/>
+ <xsl:apply-templates
+ select="$parameter/paramtype/*|$parameter/paramtype/text()"
+ mode="annotation">
+ <xsl:with-param name="highlight" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:value-of select="$name"/>
+ <xsl:copy-of select="$default"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($prefix, $text)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:call-template name="function-parameters">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="include-names" select="$include-names"/>
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="final" select="$final"/>
+ <xsl:with-param name="parameters"
+ select="$parameters[position()!=1]"/>
+ <xsl:with-param name="prefix" select="', '"/>
+ <xsl:with-param name="column" select="$end-column"/>
+ <xsl:with-param name="first-on-line" select="false()"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- Parameter goes on next line -->
+ <xsl:otherwise>
+ <!-- The comma goes on this line -->
+ <xsl:value-of select="$prefix"/><xsl:text>&#10;</xsl:text>
+
+ <!-- Indent and print the parameter -->
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:choose>
+ <xsl:when test="$final">
+ <xsl:apply-templates
+ select="$parameter/paramtype/*|$parameter/paramtype/text()"
+ mode="annotation">
+ <xsl:with-param name="highlight" select="true()"/>
+ </xsl:apply-templates>
+ <xsl:value-of select="$name"/>
+ <xsl:value-of select="$default"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($prefix, $text)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- Emit next parameter -->
+ <xsl:call-template name="function-parameters">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="include-names" select="$include-names"/>
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="final" select="$final"/>
+ <xsl:with-param name="parameters"
+ select="$parameters[position()!=1]"/>
+ <xsl:with-param name="prefix" select="', '"/>
+ <xsl:with-param name="column"
+ select="1 + string-length($text) + $indentation"/>
+ <xsl:with-param name="first-on-line" select="false()"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Function synopsis -->
+ <xsl:template match="function|method" mode="synopsis">
+ <xsl:param name="indentation"/>
+
+ <!-- True if we should compact this function -->
+ <xsl:variable name="compact"
+ select="not (para|description|requires|effects|postconditions|returns|
+ throws|complexity|notes|rationale) and
+ ($boost.compact.function='1') and
+ not (local-name(.)='method')"/>
+
+ <xsl:choose>
+ <xsl:when test="$compact">
+ <xsl:if test="purpose">
+ <!-- Compact display outputs the purpose as a comment (if
+ there is one) and the entire function declaration. -->
+ <xsl:text>&#10;&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text">
+ <xsl:text>// </xsl:text>
+ <xsl:apply-templates select="purpose/*|purpose/text()"
+ mode="purpose"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="is-reference" select="false()"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="overloaded-function|overloaded-method" mode="synopsis">
+ <xsl:param name="indentation"/>
+
+ <xsl:variable name="name" select="@name"/>
+
+ <!-- True if we should compact this function -->
+ <xsl:variable name="compact"
+ select="not (para|description|requires|effects|postconditions|returns|
+ throws|complexity|notes|rationale) and
+ ($boost.compact.function='1') and
+ not (local-name(.)='overloaded-method')"/>
+
+ <xsl:choose>
+ <xsl:when test="$compact">
+ <xsl:if test="purpose">
+ <!-- Compact display outputs the purpose as a comment (if
+ there is one) and the entire function declaration. -->
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text">
+ <xsl:text>// </xsl:text>
+ <xsl:apply-templates select="purpose" mode="annotation"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:for-each select="signature">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:when test="local-name(..)='namespace'">
+ <xsl:variable name="link-to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:variable>
+
+ <xsl:for-each select="signature">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="is-reference" select="false()"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="link-to" select="$link-to"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="signature">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="is-reference" select="false()"/>
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Group free functions together under a category name (header synopsis)-->
+ <xsl:template match="free-function-group" mode="header-synopsis">
+ <xsl:param name="class"/>
+ <xsl:param name="indentation"/>
+ <xsl:apply-templates select="function|overloaded-function" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- Constructors, destructor, and assignment operators -->
+ <xsl:template name="construct-copy-destruct-synopsis">
+ <xsl:param name="indentation"/>
+ <xsl:if test="constructor|copy-assignment|destructor">
+ <xsl:if test="typedef|static-constant">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <emphasis>
+ <xsl:text>// </xsl:text>
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id"/>
+ <xsl:text>construct-copy-destruct</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="'construct/copy/destruct'"/>
+ </xsl:call-template>
+ </emphasis>
+ <xsl:apply-templates select="constructor" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="copy-assignment" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="destructor" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="construct-copy-destruct-reference">
+ <xsl:if test="constructor|copy-assignment|destructor">
+ <xsl:call-template name="member-documentation">
+ <xsl:with-param name="name">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id"/>
+ <xsl:text>construct-copy-destruct</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="''"/>
+ </xsl:call-template>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="@name"/>
+ </xsl:call-template>
+ <xsl:text> construct/copy/destruct</xsl:text>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <orderedlist>
+ <xsl:apply-templates select="constructor" mode="reference"/>
+ <xsl:apply-templates select="copy-assignment" mode="reference"/>
+ <xsl:apply-templates select="destructor" mode="reference"/>
+ </orderedlist>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="constructor" mode="reference">
+ <xsl:call-template name="function.documentation">
+ <xsl:with-param name="text">
+ <para>
+ <xsl:call-template name="preformatted">
+ <xsl:with-param name="text">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="constructor-for" select="../@name"/>
+ <xsl:with-param name="standalone" select="true()"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </para>
+ <xsl:call-template name="function-requirements"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="copy-assignment" mode="reference">
+ <xsl:call-template name="function.documentation">
+ <xsl:with-param name="text">
+ <para>
+ <xsl:call-template name="preformatted">
+ <xsl:with-param name="text">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="copy-assign-for" select="../@name"/>
+ <xsl:with-param name="standalone" select="true()"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </para>
+ <xsl:call-template name="function-requirements"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="destructor" mode="reference">
+ <xsl:call-template name="function.documentation">
+ <xsl:with-param name="text">
+ <para>
+ <xsl:call-template name="preformatted">
+ <xsl:with-param name="text">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="destructor-for" select="../@name"/>
+ <xsl:with-param name="standalone" select="true()"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </para>
+ <xsl:call-template name="function-requirements"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Templates for functions -->
+ <xsl:template name="function.documentation">
+ <xsl:param name="text"/>
+ <xsl:choose>
+ <xsl:when test="count(ancestor::free-function-group) &gt; 0
+ or count(ancestor::method-group) &gt; 0
+ or local-name(.)='constructor'
+ or local-name(.)='copy-assignment'
+ or local-name(.)='destructor'">
+ <listitem><xsl:copy-of select="$text"/></listitem>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Semantic descriptions of functions -->
+ <xsl:template name="function-requirements">
+ <xsl:param name="namespace-reference" select="false()"/>
+
+ <xsl:if test="$namespace-reference=false()">
+ <xsl:apply-templates select="purpose/*"/>
+ </xsl:if>
+
+ <xsl:apply-templates select="description/*"/>
+
+ <xsl:if test="parameter/description|signature/parameter/description|
+ requires|effects|postconditions|returns|throws|complexity|
+ notes|rationale">
+ <variablelist spacing="compact">
+ <xsl:processing-instruction name="dbhtml">
+ list-presentation="table"
+ </xsl:processing-instruction>
+
+ <!-- Document parameters -->
+ <xsl:if test="parameter/description|signature/parameter/description">
+ <varlistentry>
+ <term>Parameters:</term>
+ <listitem>
+ <variablelist spacing="compact">
+ <xsl:processing-instruction name="dbhtml">
+ list-presentation="table"
+ </xsl:processing-instruction>
+ <xsl:for-each select="parameter|signature/parameter">
+ <xsl:sort select="attribute::name"/>
+ <xsl:if test="description">
+ <varlistentry>
+ <term>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="@name"/>
+ </xsl:call-template>
+ </term>
+ <listitem>
+ <xsl:apply-templates select="description/*"/>
+ </listitem>
+ </varlistentry>
+ </xsl:if>
+ </xsl:for-each>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </xsl:if>
+
+ <!-- Document rest of function's contract -->
+ <xsl:for-each select="requires|effects|postconditions|returns|throws|complexity|
+ notes|rationale">
+ <varlistentry>
+ <term><xsl:call-template name="function.requirement.name"/>:</term>
+ <listitem>
+ <xsl:apply-templates select="./*|./text()" mode="annotation"/>
+ </listitem>
+ </varlistentry>
+ </xsl:for-each>
+
+ </variablelist>
+ </xsl:if>
+
+ <xsl:if test="para">
+ <xsl:message>
+ <xsl:text>Warning: Use of 'para' elements in a function is deprecated.&#10;</xsl:text>
+ <xsl:text> Wrap them in a 'description' element.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="print.warning.context"/>
+ <xsl:apply-templates select="para"/>
+ </xsl:if>
+
+ </xsl:template>
+
+ <xsl:template name="function.requirement.name">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="local-name($node)='requires'">Requires</xsl:when>
+ <xsl:when test="local-name($node)='effects'">Effects</xsl:when>
+ <xsl:when test="local-name($node)='postconditions'">
+ <xsl:text>Postconditions</xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name($node)='returns'">Returns</xsl:when>
+ <xsl:when test="local-name($node)='throws'">Throws</xsl:when>
+ <xsl:when test="local-name($node)='complexity'">Complexity</xsl:when>
+ <xsl:when test="local-name($node)='notes'">Notes</xsl:when>
+ <xsl:when test="local-name($node)='rationale'">Rationale</xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Error: unhandled node type `</xsl:text>
+ <xsl:value-of select="local-name($node)"/>
+ <xsl:text>' in template function.requirement.name.</xsl:text>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Function reference -->
+ <xsl:template match="function|method" mode="reference">
+ <!-- True if we should compact this function -->
+ <xsl:variable name="compact"
+ select="not (para|description|requires|effects|postconditions|returns|
+ throws|complexity|notes|rationale) and
+ ($boost.compact.function='1') and
+ not (local-name(.)='method')"/>
+
+ <xsl:if test="not ($compact)">
+ <xsl:call-template name="function.documentation">
+ <xsl:with-param name="text">
+ <para>
+ <xsl:call-template name="preformatted">
+ <xsl:with-param name="text">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="link-type" select="'anchor'"/>
+ <xsl:with-param name="standalone" select="true()"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </para>
+ <xsl:call-template name="function-requirements"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Reference for functions at namespace level -->
+ <xsl:template match="function" mode="namespace-reference">
+ <!-- True if we should compact this function -->
+ <xsl:variable name="compact"
+ select="not (para|description|requires|effects|postconditions|returns|
+ throws|complexity|notes|rationale) and
+ ($boost.compact.function='1')"/>
+
+ <xsl:if test="not ($compact)">
+ <xsl:call-template name="reference-documentation">
+ <xsl:with-param name="name">
+ <xsl:text>Function </xsl:text>
+ <xsl:if test="template">
+ <xsl:text>template </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="@name"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="refname">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
+ <xsl:with-param name="anchor">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="synopsis">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="link-type" select="'none'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <xsl:call-template name="function-requirements">
+ <xsl:with-param name="namespace-reference" select="true()"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="overloaded-function" mode="reference">
+ <xsl:variable name="name" select="@name"/>
+
+ <!-- True if we should compact this function -->
+ <xsl:variable name="compact"
+ select="not (para|description|requires|effects|postconditions|returns|
+ throws|complexity|notes|rationale) and
+ ($boost.compact.function='1')"/>
+
+ <xsl:if test="not ($compact)">
+ <xsl:call-template name="function.documentation">
+ <xsl:with-param name="text">
+ <para>
+ <xsl:attribute name="id">
+ <xsl:call-template name="generate.id"/>
+ </xsl:attribute>
+
+ <xsl:call-template name="preformatted">
+ <xsl:with-param name="text">
+ <xsl:for-each select="signature">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="standalone" select="true()"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:with-param>
+ </xsl:call-template>
+ </para>
+ <xsl:call-template name="function-requirements"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="overloaded-function" mode="namespace-reference">
+ <!-- True if we should compact this function -->
+ <xsl:variable name="compact"
+ select="not (para|description|requires|effects|postconditions|returns|
+ throws|complexity|notes|rationale) and
+ ($boost.compact.function='1')"/>
+
+ <xsl:variable name="name" select="@name"/>
+
+ <xsl:if test="not ($compact)">
+ <xsl:call-template name="reference-documentation">
+ <xsl:with-param name="name">
+ <xsl:text>Function </xsl:text>
+ <xsl:if test="template">
+ <xsl:text>template </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="@name"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="refname">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
+ <xsl:with-param name="anchor">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="synopsis">
+ <xsl:for-each select="signature">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="link-type" select="'none'"/>
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <xsl:call-template name="function-requirements">
+ <xsl:with-param name="namespace-reference" select="true()"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="overloaded-method" mode="reference">
+ <xsl:variable name="name" select="@name"/>
+
+ <xsl:call-template name="function.documentation">
+ <xsl:with-param name="text">
+ <para>
+ <xsl:attribute name="id">
+ <xsl:call-template name="generate.id"/>
+ </xsl:attribute>
+
+ <xsl:call-template name="preformatted">
+ <xsl:with-param name="text">
+ <xsl:for-each select="signature">
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="standalone" select="true()"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:with-param>
+ </xsl:call-template>
+ </para>
+ <xsl:call-template name="function-requirements"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Group member functions together under a category name (synopsis)-->
+ <xsl:template match="method-group" mode="synopsis">
+ <xsl:param name="indentation"/>
+ <xsl:if test="count(child::*) &gt; 0">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <emphasis>
+ <xsl:text>// </xsl:text>
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="string(@name)"/>
+ </xsl:call-template>
+ </emphasis>
+ <xsl:apply-templates select="method|overloaded-method"
+ mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Group member functions together under a category name (reference)-->
+ <xsl:template match="method-group" mode="reference">
+ <xsl:if test="count(child::*) &gt; 0">
+ <xsl:call-template name="member-documentation">
+ <xsl:with-param name="name">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="''"/>
+ </xsl:call-template>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="../@name"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <orderedlist>
+ <xsl:apply-templates select="method|overloaded-method"
+ mode="reference"/>
+ </orderedlist>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Group free functions together under a category name (synopsis)-->
+ <xsl:template match="free-function-group" mode="synopsis">
+ <xsl:param name="class"/>
+ <xsl:param name="indentation"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <emphasis>
+ <xsl:text>// </xsl:text>
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="string(@name)"/>
+ </xsl:call-template>
+ </emphasis>
+ <xsl:apply-templates select="function|overloaded-function" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- Group free functions together under a category name (reference)-->
+ <xsl:template match="free-function-group" mode="reference">
+ <xsl:param name="class"/>
+ <xsl:call-template name="member-documentation">
+ <xsl:with-param name="name">
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="''"/>
+ </xsl:call-template>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="$class"/>
+ </xsl:call-template>
+ <xsl:value-of select="concat(' ',@name)"/>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <orderedlist>
+ <xsl:apply-templates select="function|overloaded-function"
+ mode="reference"/>
+ </orderedlist>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/global.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/global.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:template name="global-synopsis">
+ <xsl:param name="indentation" select="0" />
+ <xsl:if test="not(local-name(preceding-sibling::*[position()=1])=local-name(.)) and (position() &gt; 1)">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation" />
+ </xsl:call-template>
+ <xsl:call-template name="global-synopsis-impl">
+ <xsl:with-param name="link-type" select="'link'" />
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template name="global-reference">
+ <xsl:call-template name="reference-documentation">
+ <xsl:with-param name="refname">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="." />
+ </xsl:call-template>
+ <xsl:apply-templates select="specialization" />
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="purpose/*|purpose/text()" />
+ <xsl:with-param name="anchor">
+ <xsl:call-template name="generate.id" />
+ </xsl:with-param>
+ <xsl:with-param name="name">
+ <xsl:text>Global </xsl:text>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="@name" />
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="synopsis">
+ <xsl:call-template name="global-synopsis-impl">
+ <xsl:with-param name="link-type" select="'none'" />
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <xsl:apply-templates select="description" />
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+ <xsl:template name="global-synopsis-impl">
+ <xsl:param name="link-type" />
+ <xsl:if test="@specifiers">
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="@specifiers" />
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="type/*|type/text()" mode="annotation" />
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="link-or-anchor">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id" select="." />
+ </xsl:with-param>
+ <xsl:with-param name="text" select="@name" />
+ <xsl:with-param name="link-type" select="$link-type" />
+ </xsl:call-template>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+ <xsl:template match="data-member" mode="generate.id">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="separator" select="'.'"/>
+ </xsl:call-template>
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/header.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/header.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2007 Matias Capeletto
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+
+<!--
+ Header stylesheet
+ -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="relative-href.xsl"/>
+<xsl:import href="javascript.xsl"/>
+<xsl:import href="navbar.xsl"/>
+
+ <!--
+ The style of the html pages
+ *website - like the beta.boost.org
+ textlinks - old logo and links style
+ -->
+ <xsl:param name = "page.style" select = "'website'"/>
+
+ <!-- Chapters and sections select boxes params -->
+
+ <xsl:param name = "grouped.links.js" select = "'grouped_links.js'"/>
+
+ <xsl:param name = "grouped.links.chapters.show" select = "'false'"/>
+ <xsl:param name = "grouped.links.chapters.xml" select = "'boost_libs.xml'"/>
+ <xsl:param name = "grouped.links.chapters.url" select = "''"/>
+
+ <xsl:param name = "grouped.links.sections.show" select = "'false'"/>
+ <xsl:param name = "grouped.links.sections.xml" select = "'sections.xml'"/>
+ <xsl:param name = "grouped.links.sections.url" select = "''"/>
+
+ <!-- Google search box params -->
+
+ <xsl:param name = "search.box.show" select = "'false'"/>
+ <xsl:param name = "search.box.cse.definition.src"
+ select = "'http://www.boost.org/cse.definition.xml'"/>
+
+ <!--
+ google.searh.box template
+
+ params:
+ cse.definition - absolute web url of the cse definition xml
+
+ effects:
+ Insert a linked cse google search box
+ -->
+
+ <xsl:template name = "google.searh.box">
+ <xsl:param name = "cse.definition"/>
+
+ <form id="cref" action="http://google.com/cse">
+ <input type="hidden" name="cref" value="{$cse.definition}" />
+ <div> Search Boost </div>
+ <div>
+ <input class="search_box" type="text" name="q" id="q" size="40"
+ maxlength="255" alt="Search Text"/>
+ </div>
+ </form>
+ </xsl:template>
+
+ <!-- header ( overwrites docbook header.navigation template ) -->
+
+ <xsl:template name = "header.navigation">
+ <xsl:param name = "prev" select = "/foo"/>
+ <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "nav.context"/>
+
+ <xsl:variable name = "home" select = "/*[1]"/>
+ <xsl:variable name = "up" select = "parent::*"/>
+
+ <xsl:choose>
+ <xsl:when test = "$page.style = 'website'">
+
+ <!-- Include the grouped links java script api -->
+
+ <xsl:if test = "$grouped.links.chapters.show = 'true' or
+ $grouped.links.sections.show = 'true'">
+ <xsl:call-template name="include.javascript">
+ <xsl:with-param name="url" select="$grouped.links.js"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <div id="heading">
+
+ <div id="heading-placard"></div>
+
+ <!-- GroupedLinks selection boxes for All Boost Libraries and
+ inner sections -->
+
+ <div class="heading_navigation_box">
+ <xsl:if test = "$grouped.links.chapters.show = 'true'">
+ <xsl:call-template name = "grouped.links.select.box">
+ <xsl:with-param name = "definition.xml"
+ select="$grouped.links.chapters.xml"/>
+ <xsl:with-param name = "element.id" select = "'chapters_select_box'"/>
+ <xsl:with-param name = "base.url"
+ select="$grouped.links.chapters.url"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test = "$grouped.links.sections.show = 'true'">
+ <xsl:call-template name = "grouped.links.select.box">
+ <xsl:with-param name = "definition.xml"
+ select="$grouped.links.sections.xml"/>
+ <xsl:with-param name = "element.id" select = "'sections_select_box'"/>
+ <xsl:with-param name = "base.url"
+ select="$grouped.links.sections.url"/>
+ </xsl:call-template>
+ </xsl:if>
+ </div>
+
+ <!-- Google Custom Search linked CSE allows us to customize google
+ search pages by means of a definition in xml format. By default a
+ general definition is used, but libraries are encouraged to change
+ it in order to add a refinement for the libs docs -->
+
+ <div class="heading_search_box">
+ <xsl:if test = "$search.box.show = 'true'">
+ <xsl:call-template name = "google.searh.box">
+ <xsl:with-param name = "search.box.cse.definition"
+ select = "cse.definition.src"/>
+ </xsl:call-template>
+ </xsl:if>
+ </div>
+
+ </div>
+
+ <!-- Navigation -->
+
+ <xsl:call-template name="boost.navbar">
+ <xsl:with-param name = "prev" select = "$prev"/>
+ <xsl:with-param name = "next" select = "$next"/>
+ <xsl:with-param name = "nav.context" select = "$nav.context"/>
+ </xsl:call-template>
+
+ </xsl:when>
+ <xsl:when test = "$page.style = 'textlinks'">
+ <xsl:call-template name="header.textlinks"/>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:template>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/html-single.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/html-single.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
+ version="1.0">
+
+ <!-- Import the HTML stylesheet -->
+
+ <xsl:import
+ href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
+ <xsl:import href="admon.xsl"/>
+
+ <xsl:param name="admon.style"/>
+ <xsl:param name="admon.graphics">1</xsl:param>
+ <xsl:param name="chapter.autolabel" select="0"/>
+ <xsl:param name="refentry.generate.name" select="0"/>
+ <xsl:param name="refentry.generate.title" select="1"/>
+ <xsl:param name="make.year.ranges" select="1"/>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/html.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/html.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
+ version="1.0">
+
+ <!-- Import the HTML chunking stylesheet -->
+ <xsl:import
+ href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
+ <xsl:import
+ href="http://docbook.sourceforge.net/release/xsl/current/html/math.xsl"/>
+
+ <xsl:import href="chunk-common.xsl"/>
+ <xsl:import href="docbook-layout.xsl"/>
+ <xsl:import href="header.xsl"/>
+ <xsl:import href="footer.xsl"/>
+ <xsl:import href="admon.xsl"/>
+ <xsl:import href="xref.xsl"/>
+ <xsl:import href="relative-href.xsl"/>
+ <xsl:import href="callout.xsl"/>
+
+ <xsl:param name="admon.style"/>
+ <xsl:param name="admon.graphics">1</xsl:param>
+ <xsl:param name="html.stylesheet" select="'boostbook.css'"/>
+ <xsl:param name="navig.graphics" select="1"/>
+ <xsl:param name="navig.graphics.extension" select="'.png'"/>
+ <xsl:param name="chapter.autolabel" select="1"/>
+ <xsl:param name="use.id.as.filename" select="1"/>
+ <xsl:param name="refentry.generate.name" select="0"/>
+ <xsl:param name="refentry.generate.title" select="1"/>
+ <xsl:param name="make.year.ranges" select="1"/>
+ <xsl:param name="generate.manifest" select="1"/>
+ <xsl:param name="generate.section.toc.level" select="3"/>
+ <xsl:param name="doc.standalone">false</xsl:param>
+ <xsl:param name="chunker.output.indent">yes</xsl:param>
+ <xsl:param name="toc.max.depth">2</xsl:param>
+ <xsl:param name="callout.graphics.number.limit">15</xsl:param>
+
+<xsl:param name="admon.style">
+ <!-- Remove the style. Let the CSS do the styling -->
+</xsl:param>
+
+<!-- Always have graphics -->
+<xsl:param name="admon.graphics" select="1"/>
+
+ <xsl:param name="generate.toc">
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+ </xsl:param>
+
+
+
+
+ <!-- We don't want refentry's to show up in the TOC because they
+ will merely be redundant with the synopsis. -->
+ <xsl:template match="refentry" mode="toc"/>
+
+ <!-- override the behaviour of some DocBook elements for better
+ rendering facilities -->
+
+ <xsl:template match = "programlisting[ancestor::informaltable]">
+ <pre class = "table-{name(.)}"><xsl:apply-templates/></pre>
+ </xsl:template>
+
+ <xsl:template match = "refsynopsisdiv">
+ <h2 class = "{name(.)}-title">Synopsis</h2>
+ <div class = "{name(.)}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <link rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="substring-before($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:if test="$html.stylesheet.type != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$html.stylesheet.type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <link rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$stylesheets"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:if test="$html.stylesheet.type != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$html.stylesheet.type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/index.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/index.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+ <xsl:template match="class-index">
+
+ </xsl:template>
+
+ <xsl:template match="function-index">
+
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/javascript.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/javascript.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2007 Matias Capeletto
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+
+<!--
+ Templates that allows the use javascript
+ Support for GroupedLinks select boxes
+ -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="relative-href.xsl"/>
+
+ <!--
+ include.javascript template
+
+ Params:
+ url - path to the js file (it can be relative)
+
+ Effects:
+ Include a js file in a page
+ -->
+
+ <xsl:template name = "include.javascript">
+ <xsl:param name = "url"/>
+
+ <script type="text/javascript">
+ <xsl:attribute name = "src">
+ <xsl:call-template name = "href.target.relative">
+ <xsl:with-param name = "target" select = "$url"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </script>
+ </xsl:template>
+
+ <!--
+ grouped.links.select.box template
+
+ Params:
+ definition.xml - path to the xml definition file (it can be relative)
+ form.id - string identifier, it must be unique in the page
+ form.id - string identifier, it must be unique in the page
+
+ Effects:
+ Insert a GropedLinks select box
+
+ Requires:
+ grouped_links.js must be included in the page
+ -->
+
+ <xsl:template name = "grouped.links.select.box">
+ <xsl:param name = "definition.xml"/>
+ <xsl:param name = "element.id"/>
+ <xsl:param name = "base.url"/>
+
+ <div class="grouped_links">
+ <xsl:attribute name = "id">
+ <xsl:value-of select="$element.id"/>
+ </xsl:attribute>
+ <script type="text/javascript">
+ grouped_links_select_box(
+ '<xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target"
+ select="$definition.xml"/>
+ </xsl:call-template>',
+ '<xsl:value-of select="$element.id"/>',
+ '<xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target"
+ select="$base.url"/>
+ </xsl:call-template>');
+ </script>
+ </div>
+ </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file

Added: sandbox/doc_test/XSL/library.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/library.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+ <xsl:key name="library-categories" match="library"
+ use="libraryinfo/librarycategory/@name"/>
+
+ <xsl:template match="librarylist">
+ <itemizedlist spacing="compact">
+ <xsl:apply-templates select="//library"
+ mode="build-library-list">
+ <xsl:sort select="@name"/>
+ </xsl:apply-templates>
+ </itemizedlist>
+ </xsl:template>
+
+ <xsl:template name="library.link">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="name" select="$node/attribute::name"/>
+
+ <xsl:choose>
+ <xsl:when test="$node/attribute::html-only = 1">
+ <xsl:variable name="url">
+ <xsl:choose>
+ <xsl:when test="$node/attribute::url">
+ <xsl:value-of select="$node/attribute::url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($boost.root,
+ '/libs/',
+ $node/attribute::dirname,
+ '/index.html')"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <ulink>
+ <xsl:attribute name="url">
+ <xsl:value-of select="$url"/>
+ </xsl:attribute>
+ <xsl:value-of select="$name"/>
+ </ulink>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:choose>
+ <xsl:when test="$node/attribute::id">
+ <xsl:value-of select="$node/attribute::id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="$name"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="library" mode="build-library-list">
+ <listitem>
+ <simpara>
+ <xsl:call-template name="library.link"/>
+ <xsl:text> - </xsl:text>
+ <xsl:apply-templates select="libraryinfo/librarypurpose"
+ mode="build-library-list"/>
+ </simpara>
+ </listitem>
+ </xsl:template>
+
+ <xsl:template match="librarypurpose" mode="build-library-list">
+ <xsl:apply-templates/>
+ <xsl:text>, from </xsl:text>
+ <xsl:apply-templates select="../author" mode="display-author-list"/>
+ </xsl:template>
+
+ <xsl:template match="author" mode="display-author-list">
+ <xsl:if test="(position() &gt; 1) and (count(../author) &gt; 2)">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:if test="(position() = count(../author)) and (position() &gt; 1)">
+ <xsl:if test="position() &lt; 3">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:text>and </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates select="firstname/text()"/>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates select="surname/text()"/>
+ <xsl:if test="(position() = count(../author))">
+ <xsl:text>.</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="librarycategorylist">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="librarycategorydef">
+ <section>
+ <title><xsl:apply-templates/></title>
+ <xsl:variable name="name" select="@name"/>
+ <itemizedlist spacing="compact">
+ <xsl:apply-templates select="key('library-categories', $name)"
+ mode="build-library-list">
+ <xsl:sort select="@name"/>
+ </xsl:apply-templates>
+ </itemizedlist>
+ </section>
+ </xsl:template>
+
+ <xsl:template match="libraryinfo">
+ <chapterinfo>
+ <xsl:apply-templates select="author|copyright|legalnotice"/>
+ </chapterinfo>
+ </xsl:template>
+
+ <xsl:template match="librarypurpose|librarycategory"/>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/lookup.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/lookup.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,449 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:param name="boost.max.id.length">26</xsl:param>
+
+ <!-- Generate an ID for the entity referenced -->
+ <xsl:template name="generate.id">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="ancestor::class-specialization|ancestor::struct-specialization|ancestor::union-specialization">
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>-bb</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="$node" mode="generate.id"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="*" mode="generate.id">
+ <xsl:value-of select="generate-id(.)"/>
+ <xsl:text>-bb</xsl:text>
+ </xsl:template>
+
+ <xsl:template name="strip-qualifiers-non-template">
+ <xsl:param name="name"/>
+ <xsl:choose>
+ <xsl:when test="contains($name, '&gt;')">
+ <xsl:call-template name="strip-qualifiers-non-template">
+ <xsl:with-param name="name" select="substring-after($name, '&gt;')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, '::')">
+ <xsl:call-template name="strip-qualifiers-non-template">
+ <xsl:with-param name="name" select="substring-after($name, '::')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="strip-balanced">
+ <xsl:param name="name"/>
+ <xsl:param name="open" select="'&lt;'"/>
+ <xsl:param name="close" select="'&gt;'"/>
+ <xsl:param name="depth" select="0"/>
+ <xsl:choose>
+ <xsl:when test="contains($name, $open)
+ and not(contains(substring-before($name, $open), $close))">
+ <xsl:call-template name="strip-balanced">
+ <xsl:with-param name="name" select="substring-after($name, $open)"/>
+ <xsl:with-param name="open" select="$open"/>
+ <xsl:with-param name="close" select="$close"/>
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="contains($name, $close) and ($depth &gt; 1)">
+ <xsl:call-template name="strip-balanced">
+ <xsl:with-param name="name" select="substring-after($name, $close)"/>
+ <xsl:with-param name="open" select="$open"/>
+ <xsl:with-param name="close" select="$close"/>
+ <xsl:with-param name="depth" select="$depth - 1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="substring-after($name, $close)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="strip-qualifiers-template">
+ <xsl:param name="name"/>
+ <xsl:choose>
+ <xsl:when test="contains($name, '::')
+ and not(contains(substring-before($name, '::'), '&lt;'))">
+ <xsl:call-template name="strip-qualifiers-template">
+ <xsl:with-param name="name" select="substring-after($name, '::')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="rest">
+ <xsl:call-template name="strip-balanced">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$rest != ''">
+ <xsl:call-template name="strip-qualifiers-template">
+ <xsl:with-param name="name" select="$rest"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Strip the qualifiers off a qualified name and return the unqualified
+ name. For instance, "boost::python::function" would become just
+ "function".
+ Must handle ns::foo -> foo
+ Must handle ns::foo<bar::baz> -> foo<bar::baz>
+ Must handle ns::foo<bar::baz>::nested -> nested
+ Must handle ns::foo<x>::bar<y> -> bar<y> -->
+ <xsl:template name="strip-qualifiers">
+ <xsl:param name="name"/>
+ <xsl:choose>
+ <xsl:when test="substring($name, string-length($name)) = '&gt;'">
+ <xsl:call-template name="strip-qualifiers-template">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="strip-qualifiers-non-template">
+ <xsl:with-param name="name" select="$name"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Build the fully-qualified name of the given node -->
+ <xsl:template name="fully-qualified-name">
+ <xsl:param name="node"/>
+ <xsl:param name="separator" select="'::'"/>
+ <xsl:apply-templates select="$node" mode="fully-qualified-name">
+ <xsl:with-param name="separator" select="$separator"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- Hack to make the node we are building the current node so that the
+ ancestor:: syntax will work -->
+ <xsl:template match="*" mode="fully-qualified-name">
+ <xsl:param name="separator" select="'::'"/>
+ <xsl:call-template name="build-fully-qualified-name">
+ <xsl:with-param name="separator" select="$separator"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- The real routine that builds a fully-qualified name for the current
+ node. -->
+ <xsl:template name="build-fully-qualified-name">
+ <xsl:param name="separator" select="'::'"/>
+
+ <!-- The depth of qualified name element that we will print now-->
+ <xsl:param name="depth" select="1"/>
+
+ <!-- Determine the set of ancestor namespaces -->
+ <xsl:variable name="ancestors"
+ select="ancestor::namespace|
+ ancestor::class|ancestor::struct|ancestor::union|
+ ancestor::class-specialization|ancestor::struct-specialization|ancestor::union-specialization"/>
+
+ <xsl:choose>
+ <xsl:when test="$depth &gt; count($ancestors)">
+ <xsl:apply-templates select="." mode="print-name"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="name($ancestors[$depth])='namespace' or
+ count(ancestor::free-function-group)=0">
+ <xsl:apply-templates select="$ancestors[$depth]" mode="print-name"/>
+ <xsl:value-of select="$separator"/>
+ </xsl:if>
+ <xsl:call-template name="build-fully-qualified-name">
+ <xsl:with-param name="separator" select="$separator"/>
+ <xsl:with-param name="depth" select="$depth + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Print the name of the current node -->
+ <xsl:template match="*" mode="print-name">
+ <xsl:value-of select="@name"/>
+ </xsl:template>
+
+ <xsl:template name="print-specialization-name">
+ <xsl:value-of select="@name"/>
+ <xsl:text>&lt;</xsl:text>
+ <xsl:value-of select="specialization/template-arg[position() = 1]/text()"/>
+ <xsl:for-each select="specialization/template-arg[position() &gt; 1]">
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="text()"/>
+ </xsl:for-each>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="struct-specialization" mode="print-name">
+ <xsl:call-template name="print-specialization-name"/>
+ </xsl:template>
+
+ <xsl:template match="class-specialization" mode="print-name">
+ <xsl:call-template name="print-specialization-name"/>
+ </xsl:template>
+
+ <xsl:template match="union-specialization" mode="print-name">
+ <xsl:call-template name="print-specialization-name"/>
+ </xsl:template>
+
+ <xsl:template name="name-matches-node">
+ <!-- The name we are looking for -->
+ <xsl:param name="name"/>
+
+ <!-- The name to display -->
+ <xsl:param name="display-name" select="$name"/>
+
+ <!-- The context in which this name occurs -->
+ <xsl:param name="context"/>
+
+ <!-- The node that we are checking against -->
+ <xsl:param name="node"/>
+
+ <!-- The mode we are in. Can be one of:
+ matches: emits the matches as they are found (for debugging)
+ link: link to the node that was found
+ -->
+ <xsl:param name="mode" select="'matches'"/>
+
+ <!-- The index into the list of using directives for the context node -->
+ <xsl:param name="index" select="1"/>
+
+ <!-- The prefix we should append to the name when checking this node -->
+ <xsl:param name="prefix" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="count($node) &gt; 1">
+ <xsl:variable name="matches">
+ <xsl:call-template name="count-matches">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="nodes" select="$node[position() = 1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$matches = 0">
+ <xsl:call-template name="name-matches-node">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="$display-name"/>
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="node" select="$node[position() &gt; 1]"/>
+ <xsl:with-param name="mode" select="$mode"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="name-matches-node">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="$display-name"/>
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="node" select="$node[position() = 1]"/>
+ <xsl:with-param name="mode" select="$mode"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="count($node) = 1">
+ <!-- The fully-qualified name of the node we are checking against -->
+ <xsl:variable name="fully-qualified-name">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- The set of using directives for this context node -->
+ <xsl:variable name="directives"
+ select="$context/ancestor::*/using-namespace |
+ $context/ancestor::namespace |
+ $context/ancestor::*/using-class |
+ $context/ancestor::class |
+ $context/ancestor::struct"/>
+
+ <!-- The name of the current directive -->
+ <xsl:variable name="this-context">
+ <xsl:apply-templates select="$directives[$index]" mode="print-name"/>
+ </xsl:variable>
+
+ <!-- Check if we have a match -->
+ <xsl:variable name="have-match"
+ select="$fully-qualified-name = concat($prefix, $name)"/>
+
+ <xsl:if test="$have-match">
+ <xsl:choose>
+ <xsl:when test="$mode='matches'">
+ Match in namespace ::<xsl:value-of select="$prefix"/>
+ </xsl:when>
+ <xsl:when test="$mode='link'">
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="$display-name"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+
+ <xsl:if test="(not($index &gt; count($directives))) and
+ (not($have-match) or ($mode = 'matches'))">
+ <xsl:variable name="first-branch">
+ <xsl:if test="not ($prefix = '')">
+ <!-- Recurse and append the current context node to the prefix -->
+ <xsl:call-template name="name-matches-node">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="$display-name"/>
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="mode" select="$mode"/>
+ <xsl:with-param name="index" select="$index + 1"/>
+ <xsl:with-param name="prefix"
+ select="concat($prefix, $this-context, '::')"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="string($first-branch) != ''">
+ <xsl:copy-of select="$first-branch"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Recurse with just the current context node -->
+ <xsl:call-template name="name-matches-node">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="$display-name"/>
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="mode" select="$mode"/>
+ <xsl:with-param name="index" select="$index + 1"/>
+ <xsl:with-param name="prefix"
+ select="concat($this-context, '::')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Count the number of nodes in the set that match the given name and
+ lookup context -->
+ <xsl:template name="count-matches">
+ <xsl:param name="name"/>
+ <xsl:param name="context"/>
+ <xsl:param name="nodes"/>
+
+ <xsl:variable name="match-string">
+ <xsl:for-each select="$nodes">
+ <xsl:variable name="does-match">
+ <xsl:call-template name="name-matches-node">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="context" select="$context"/>
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:if test="not($does-match='')">X</xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:value-of select="string-length($match-string)"/>
+ </xsl:template>
+
+ <xsl:template name="cxx-link-name">
+ <!-- The actual lookup node -->
+ <xsl:param name="lookup"/>
+
+ <!-- The type of name to lookup (e.g., class) -->
+ <xsl:param name="type"/>
+
+ <!-- The name we are looking for -->
+ <xsl:param name="name"/>
+
+ <!-- The name we will display -->
+ <xsl:param name="display-name"/>
+
+ <!-- The name we are looking for (unqualified)-->
+ <xsl:param name="unqualified-name"/>
+
+ <!-- The list of nodes that match the lookup node in both name and type -->
+ <xsl:param name="nodes"/>
+
+ <!-- Count the number of nodes that match -->
+ <xsl:variable name="matches">
+ <xsl:call-template name="count-matches">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="context" select="$lookup"/>
+ <xsl:with-param name="nodes" select="$nodes"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$matches = 0">
+ <xsl:message>
+ <xsl:text>Cannot find </xsl:text>
+ <xsl:value-of select="$type"/>
+ <xsl:text> named '</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>'</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$display-name"/>
+ </xsl:when>
+ <xsl:when test="$matches = 1">
+ <xsl:for-each select="$nodes">
+ <xsl:call-template name="name-matches-node">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="$display-name"/>
+ <xsl:with-param name="context" select="$lookup"/>
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="mode" select="'link'"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Reference to </xsl:text>
+ <xsl:value-of select="$type"/>
+ <xsl:text> '</xsl:text>
+ <xsl:value-of select="$name"/>
+ <xsl:text>' is ambiguous. Found:</xsl:text>
+ <xsl:for-each select="$nodes">
+ <xsl:call-template name="name-matches-node">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="context" select="$lookup"/>
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="mode" select="'matches'"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:message>
+ <xsl:call-template name="name-matches-node">
+ <xsl:with-param name="name" select="$name"/>
+ <xsl:with-param name="display-name" select="$display-name"/>
+ <xsl:with-param name="context" select="$lookup"/>
+ <xsl:with-param name="node" select="$nodes"/>
+ <xsl:with-param name="mode" select="'link'"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/macro.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/macro.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+ <xsl:template match="macro" mode="synopsis">
+ <xsl:param name="indentation" select="0"/>
+
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if
+ test="not(local-name(preceding-sibling::*[position()=1])=local-name(.))">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:call-template name="macro-synopsis">
+ <xsl:with-param name="link-type" select="'link'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="macro" mode="reference">
+ <xsl:call-template name="reference-documentation">
+ <xsl:with-param name="refname" select="@name"/>
+ <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
+ <xsl:with-param name="anchor">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="name">
+ <xsl:text>Macro </xsl:text>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="@name"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="synopsis">
+ <xsl:call-template name="macro-synopsis">
+ <xsl:with-param name="link-type" select="'none'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <xsl:apply-templates select="description"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="macro-synopsis">
+ <xsl:param name="link-type"/>
+
+ <xsl:call-template name="link-or-anchor">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id" select="."/>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="@name"/>
+ <xsl:with-param name="link-type" select="$link-type"/>
+ </xsl:call-template>
+
+ <xsl:if test="@kind='functionlike'">
+ <xsl:text>(</xsl:text>
+ <xsl:for-each select="macro-parameter">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:value-of select="@name"/>
+ </xsl:for-each>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="macro" mode="generate.id">
+ <xsl:value-of select="@name"/>
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/manpages.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/manpages.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <!-- Import the man pages stylesheet -->
+ <xsl:import
+ href="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"/>
+
+ <xsl:param name="generate.manifest" select="1"/>
+ <xsl:param name="manifest">man.manifest</xsl:param>
+
+ <xsl:template match="literallayout">
+ <xsl:text>&#10;.nf&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;.fi&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="para|simpara|remark" mode="list">
+ <xsl:variable name="foo">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="literallayout">
+ <xsl:copy-of select="$foo"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($foo)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="following-sibling::para or following-sibling::simpara or
+ following-sibling::remark">
+ <!-- Make sure multiple paragraphs within a list item don't -->
+ <!-- merge together. -->
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="build.refentry.filename">
+ <xsl:param name="node" select="."/>
+ <xsl:variable name="section" select="$node/refmeta/manvolnum"/>
+ <xsl:variable name="name" select="$node/refnamediv/refname[1]"/>
+ <xsl:value-of select="concat('man', $section, '/',
+ translate(normalize-space($name),
+ '&lt;&gt;', '__'),
+ '.', $section)"/>
+
+ </xsl:template>
+
+ <xsl:template match="refentry" mode="manifest">
+ <xsl:call-template name="build.refentry.filename"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="/">
+ <xsl:choose>
+ <xsl:when test="//refentry">
+ <xsl:apply-templates select="//refentry"/>
+ <xsl:if test="$generate.manifest=1">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$manifest"/>
+ <xsl:with-param name="content">
+ <xsl:value-of select="$manifest"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:apply-templates select="//refentry" mode="manifest"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>No refentry elements!</xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+<xsl:template match="refentry">
+ <xsl:variable name="section" select="refmeta/manvolnum"/>
+ <xsl:variable name="name" select="refnamediv/refname[1]"/>
+
+ <!-- standard man page width is 64 chars; 6 chars needed for the two
+ (x) volume numbers, and 2 spaces, leaves 56 -->
+ <xsl:variable name="twidth" select="(56 - string-length(refmeta/refentrytitle)) div 2"/>
+
+ <xsl:variable name="reftitle"
+ select="substring(refmeta/refentrytitle, 1, $twidth)"/>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="refentryinfo/title">
+ <xsl:value-of select="refentryinfo/title"/>
+ </xsl:when>
+ <xsl:when test="../referenceinfo/title">
+ <xsl:value-of select="../referenceinfo/title"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="date">
+ <xsl:choose>
+ <xsl:when test="refentryinfo/date">
+ <xsl:value-of select="refentryinfo/date"/>
+ </xsl:when>
+ <xsl:when test="../referenceinfo/date">
+ <xsl:value-of select="../referenceinfo/date"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="productname">
+ <xsl:choose>
+ <xsl:when test="refentryinfo/productname">
+ <xsl:value-of select="refentryinfo/productname"/>
+ </xsl:when>
+ <xsl:when test="../referenceinfo/productname">
+ <xsl:value-of select="../referenceinfo/productname"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename">
+ <xsl:call-template name="build.refentry.filename"/>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:text>.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "</xsl:text>
+ <xsl:value-of select="translate($reftitle,'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
+ <xsl:text>" </xsl:text>
+ <xsl:value-of select="refmeta/manvolnum[1]"/>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="normalize-space($date)"/>
+ <xsl:text>" "</xsl:text>
+ <xsl:value-of select="normalize-space($productname)"/>
+ <xsl:text>" "</xsl:text>
+ <xsl:value-of select="$title"/>
+ <xsl:text>"
+</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- Author section -->
+ <xsl:choose>
+ <xsl:when test="refentryinfo//author">
+ <xsl:apply-templates select="refentryinfo" mode="authorsect"/>
+ </xsl:when>
+ <xsl:when test="/book/bookinfo//author">
+ <xsl:apply-templates select="/book/bookinfo" mode="authorsect"/>
+ </xsl:when>
+ <xsl:when test="/article/articleinfo//author">
+ <xsl:apply-templates select="/article/articleinfo" mode="authorsect"/>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:with-param>
+ </xsl:call-template>
+ <!-- Now generate stub include pages for every page documented in
+ this refentry (except the page itself) -->
+ <xsl:for-each select="refnamediv/refname">
+ <xsl:if test=". != $name">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename"
+ select="concat(normalize-space(.), '.', $section)"/>
+ <xsl:with-param name="content" select="concat('.so man',
+ $section, '/', $name, '.', $section, '&#10;')"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/navbar.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/navbar.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="relative-href.xsl"/>
+
+ <!--
+ how to render the Home | Libraries | ... | More contents
+ none - do not display ("standalone" mode)
+ *horizontal - display in old-Boost style format
+ vertical - like the new Getting Started layout
+ -->
+ <xsl:param name = "nav.layout" select = "'horizontal'"/>
+
+ <!--
+ header border layout
+ Boost - place the old-Boost border around the header
+ *none - do not place a border around the header
+ -->
+
+ <xsl:param name = "nav.border" select = "'none'" />
+ <!--
+ nav.flow:
+ none - do not display navigation at the header
+ DocBook - display the navigation after the header
+ *Spirit - display "mini" navigation on the right
+ -->
+ <xsl:param name = "nav.flow" select = "'Spirit'"/>
+
+ <!-- location of the various Boost elements for the textlinks page style -->
+
+ <xsl:param name = "boost.root" select = "'../..'"/>
+ <xsl:param name = "boost.image.src"
+ select = "concat($boost.root, '/boost.png')"/>
+ <xsl:param name = "boost.image.alt" select = "'Boost C++ Libraries'"/>
+ <xsl:param name = "boost.image.w" select = "277"/>
+ <xsl:param name = "boost.image.h" select = "86"/>
+ <xsl:param name = "boost.libraries" select = "'libraries.html'"/>
+
+ <!--
+ boost.navbar template
+
+ Effects:
+ Insert the user selected navbar
+ -->
+
+ <xsl:template name = "boost.navbar">
+ <xsl:param name = "prev" select = "/foo"/>
+ <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "nav.context"/>
+ <xsl:choose>
+ <xsl:when test = "$nav.flow = 'DocBook'">
+ <table width = "100%" class = "navheader">
+ <xsl:call-template name = "navbar.docbook-homeinfo">
+ <xsl:with-param name = "prev" select = "$prev"/>
+ <xsl:with-param name = "next" select = "$next"/>
+ <xsl:with-param name = "nav.context" select = "$nav.context"/>
+ </xsl:call-template>
+ <xsl:call-template name = "navbar.docbook-prevnext">
+ <xsl:with-param name = "prev" select = "$prev"/>
+ <xsl:with-param name = "next" select = "$next"/>
+ <xsl:with-param name = "nav.context" select = "$nav.context"/>
+ </xsl:call-template>
+ </table>
+ </xsl:when>
+ <xsl:when test = "$nav.flow = 'Spirit'">
+ <xsl:call-template name = "navbar.spirit">
+ <xsl:with-param name = "prev" select = "$prev"/>
+ <xsl:with-param name = "next" select = "$next"/>
+ <xsl:with-param name = "nav.context" select = "$nav.context"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- navbar -->
+
+ <xsl:template name = "navbar.docbook-homeinfo">
+ <xsl:param name = "prev" select = "/foo"/>
+ <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "nav.context"/>
+
+ <xsl:variable name = "home" select = "/*[1]"/>
+ <tr>
+ <td align = "left" width = "40%">
+ <xsl:if test = "$navig.showtitles != 0"> <!-- prev:name -->
+ <xsl:apply-templates select = "$prev" mode = "object.title.markup"/>
+ </xsl:if>
+ </td><td align = "center" width = "20%">
+ <!-- home -->
+ <xsl:if test = "$home != . or $nav.context = 'toc'">
+ <a accesskey = "h">
+ <xsl:attribute name = "href"><xsl:call-template name = "href.target">
+ <xsl:with-param name = "object" select = "$home"/>
+ </xsl:call-template></xsl:attribute>
+ <xsl:call-template name = "navig.content">
+ <xsl:with-param name = "direction" select = "'home'"/>
+ </xsl:call-template>
+ </a>
+ <xsl:if test = "$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test = "$chunk.tocs.and.lots != 0 and $nav.context != 'toc'"><a accesskey = "t">
+ <xsl:attribute name = "href">
+ <xsl:apply-templates select = "/*[1]" mode = "recursive-chunk-filename"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select = "$html.ext"/>
+ </xsl:attribute>
+ <xsl:call-template name = "gentext">
+ <xsl:with-param name = "key" select = "'nav-toc'"/>
+ </xsl:call-template>
+ </a></xsl:if>
+ </td><td align = "right" width = "40%">
+ <xsl:if test = "$navig.showtitles != 0"> <!-- next:name -->
+ <xsl:apply-templates select = "$next" mode = "object.title.markup"/>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template name = "navbar.docbook-prevnext">
+ <xsl:param name = "prev" select = "/foo"/>
+ <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "nav.context"/>
+
+ <xsl:variable name = "up" select = "parent::*"/>
+ <tr>
+ <td align = "left" width = "40%">
+ <xsl:if test = "count($prev)>0"><a accesskey = "p"> <!-- prev -->
+ <xsl:attribute name = "href"><xsl:call-template name = "href.target">
+ <xsl:with-param name = "object" select = "$prev"/>
+ </xsl:call-template></xsl:attribute>
+ <xsl:call-template name = "navig.content">
+ <xsl:with-param name = "direction" select = "'prev'"/>
+ </xsl:call-template>
+ </a></xsl:if>
+ </td><td align = "center" width = "20%">
+ <xsl:if test = "count($up)>0"><a accesskey = "u"> <!-- up -->
+ <xsl:attribute name = "href"><xsl:call-template name = "href.target">
+ <xsl:with-param name = "object" select = "$up"/>
+ </xsl:call-template></xsl:attribute>
+ <xsl:call-template name = "navig.content">
+ <xsl:with-param name = "direction" select = "'up'"/>
+ </xsl:call-template>
+ </a></xsl:if>
+ </td><td align = "right" width = "40%">
+ <xsl:if test = "count($next)>0"><a accesskey = "n"> <!-- next -->
+ <xsl:attribute name = "href"><xsl:call-template name = "href.target">
+ <xsl:with-param name = "object" select = "$next"/>
+ </xsl:call-template></xsl:attribute>
+ <xsl:call-template name = "navig.content">
+ <xsl:with-param name = "direction" select = "'next'"/>
+ </xsl:call-template>
+ </a></xsl:if>
+ </td>
+ </tr>
+ </xsl:template>
+
+ <xsl:template name = "navbar.spirit">
+ <xsl:param name = "prev" select = "/foo"/>
+ <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "nav.context"/>
+
+ <xsl:variable name = "home" select = "/*[1]"/>
+ <xsl:variable name = "up" select = "parent::*"/>
+
+ <div class = "spirit-nav">
+ <!-- prev -->
+ <xsl:if test = "count($prev)>0"><a accesskey = "p">
+ <xsl:attribute name = "href"><xsl:call-template name = "href.target">
+ <xsl:with-param name = "object" select = "$prev"/>
+ </xsl:call-template></xsl:attribute>
+ <xsl:call-template name = "navig.content">
+ <xsl:with-param name = "direction" select = "'prev'"/>
+ </xsl:call-template>
+ </a></xsl:if>
+ <!-- up -->
+ <xsl:if test = "count($up)>0"><a accesskey = "u">
+ <xsl:attribute name = "href"><xsl:call-template name = "href.target">
+ <xsl:with-param name = "object" select = "$up"/>
+ </xsl:call-template></xsl:attribute>
+ <xsl:call-template name = "navig.content">
+ <xsl:with-param name = "direction" select = "'up'"/>
+ </xsl:call-template>
+ </a></xsl:if>
+ <!-- home -->
+ <xsl:if test = "$home != . or $nav.context = 'toc'">
+ <a accesskey = "h">
+ <xsl:attribute name = "href"><xsl:call-template name = "href.target">
+ <xsl:with-param name = "object" select = "$home"/>
+ </xsl:call-template></xsl:attribute>
+ <xsl:call-template name = "navig.content">
+ <xsl:with-param name = "direction" select = "'home'"/>
+ </xsl:call-template>
+ </a>
+ <xsl:if test = "$chunk.tocs.and.lots != 0 and $nav.context != 'toc'">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+ </xsl:if>
+ <xsl:if test = "$chunk.tocs.and.lots != 0 and $nav.context != 'toc'"><a accesskey = "t">
+ <xsl:attribute name = "href">
+ <xsl:apply-templates select = "/*[1]" mode = "recursive-chunk-filename"/>
+ <xsl:text>-toc</xsl:text>
+ <xsl:value-of select = "$html.ext"/>
+ </xsl:attribute>
+ <xsl:call-template name = "gentext">
+ <xsl:with-param name = "key" select = "'nav-toc'"/>
+ </xsl:call-template>
+ </a></xsl:if>
+ <!-- next -->
+ <xsl:if test = "count($next)>0"><a accesskey = "n">
+ <xsl:attribute name = "href"><xsl:call-template name = "href.target">
+ <xsl:with-param name = "object" select = "$next"/>
+ </xsl:call-template></xsl:attribute>
+ <xsl:call-template name = "navig.content">
+ <xsl:with-param name = "direction" select = "'next'"/>
+ </xsl:call-template>
+ </a></xsl:if>
+ </div>
+ </xsl:template>
+
+ <!-- Old style header navigation -->
+
+ <xsl:template name = "header.textlinks">
+ <xsl:param name = "prev" select = "/foo"/>
+ <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "nav.context"/>
+
+ <xsl:variable name = "home" select = "/*[1]"/>
+ <xsl:variable name = "up" select = "parent::*"/>
+
+ <table cellpadding = "2" width = "100%">
+ <xsl:if test = "$nav.border = 'Boost'">
+ <xsl:attribute name = "class">boost-head</xsl:attribute>
+ </xsl:if>
+
+ <td valign = "top">
+ <xsl:if test = "$nav.border = 'Boost'">
+ <xsl:attribute name = "style">background-color: white; width: 50%;</xsl:attribute>
+ </xsl:if>
+ <img alt="{$boost.image.alt}" width="{$boost.image.w}" height="{$boost.image.h}">
+ <xsl:attribute name="src">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$boost.image.src"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </img>
+ </td><xsl:choose>
+ <xsl:when test = "$nav.layout = 'horizontal'">
+ <xsl:call-template name = "header.navdata-horiz"/>
+ </xsl:when><xsl:when test = "$nav.layout = 'vertical'">
+ <xsl:call-template name = "header.navdata-vert"/>
+ </xsl:when>
+ </xsl:choose>
+ </table>
+ <hr/>
+ <xsl:choose>
+ <xsl:when test = "$nav.flow = 'DocBook'">
+ <table width = "100%" class = "navheader">
+ <xsl:call-template name = "navbar.docbook-homeinfo">
+ <xsl:with-param name = "prev" select = "$prev"/>
+ <xsl:with-param name = "next" select = "$next"/>
+ <xsl:with-param name = "nav.context" select = "$nav.context"/>
+ </xsl:call-template>
+ <xsl:call-template name = "navbar.docbook-prevnext">
+ <xsl:with-param name = "prev" select = "$prev"/>
+ <xsl:with-param name = "next" select = "$next"/>
+ <xsl:with-param name = "nav.context" select = "$nav.context"/>
+ </xsl:call-template>
+ </table>
+ </xsl:when><xsl:when test = "$nav.flow = 'Spirit'">
+ <xsl:call-template name = "navbar.spirit">
+ <xsl:with-param name = "prev" select = "$prev"/>
+ <xsl:with-param name = "next" select = "$next"/>
+ <xsl:with-param name = "nav.context" select = "$nav.context"/>
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name = "header.navdata-horiz">
+ <xsl:variable name="home_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="concat( $boost.root, '/index.htm' )"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="libraries_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$boost.libraries"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="people_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="concat( $boost.root, '/people/people.htm' )"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="faq_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="concat( $boost.root, '/more/faq.htm' )"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="more_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="concat( $boost.root, '/more/index.htm' )"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test = "$nav.border = 'Boost'">
+ <td align = "center" class = "boost-headtd"><a href = "{$home_link}" class = "boost-headelem">Home</a></td>
+ <td align = "center" class = "boost-headtd"><a href = "{$libraries_link}" class = "boost-headelem">Libraries</a></td>
+ <td align = "center" class = "boost-headtd"><a href = "{$people_link}" class = "boost-headelem">People</a></td>
+ <td align = "center" class = "boost-headtd"><a href = "{$faq_link}" class = "boost-headelem">FAQ</a></td>
+ <td align = "center" class = "boost-headtd"><a href = "{$more_link}" class = "boost-headelem">More</a></td>
+ </xsl:when><xsl:otherwise>
+ <td align = "center"><a href = "{$home_link}">Home</a></td>
+ <td align = "center"><a href = "{$libraries_link}">Libraries</a></td>
+ <td align = "center"><a href = "{$people_link}">People</a></td>
+ <td align = "center"><a href = "{$faq_link}">FAQ</a></td>
+ <td align = "center"><a href = "{$more_link}">More</a></td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name = "header.navdata-vert">
+ <xsl:variable name="home_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="concat( $boost.root, '/index.htm' )"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="libraries_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$boost.libraries"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="people_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="concat( $boost.root, '/people/people.htm' )"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="faq_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="concat( $boost.root, '/more/faq.htm' )"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="more_link">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="concat( $boost.root, '/more/index.htm' )"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <td><div>
+ <xsl:if test = "$nav.border != 'Boost'">
+ <xsl:attribute name = "class">boost-toc</xsl:attribute>
+ </xsl:if>
+ <div><a href = "{$home_link}">Home</a></div>
+ <div><a href = "{$libraries_link}">Libraries</a></div>
+ <div><a href = "{$people_link}">People</a></div>
+ <div><a href = "{$faq_link}">FAQ</a></div>
+ <div><a href = "{$more_link}">More</a></div>
+ </div></td>
+ </xsl:template>
+
+
+</xsl:stylesheet>
\ No newline at end of file

Added: sandbox/doc_test/XSL/reference.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/reference.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+ <xsl:include href="annotation.xsl"/>
+ <xsl:include href="template.xsl"/>
+ <xsl:include href="function.xsl"/>
+ <xsl:include href="type.xsl"/>
+ <xsl:include href="source-highlight.xsl"/>
+ <xsl:include href="utility.xsl"/>
+ <xsl:include href="lookup.xsl"/>
+ <xsl:include href="library.xsl"/>
+ <xsl:include href="index.xsl"/>
+ <xsl:include href="error.xsl"/>
+ <xsl:include href="macro.xsl"/>
+ <xsl:include href="testing/testsuite.xsl"/>
+ <xsl:include href="caramel/concept2docbook.xsl"/>
+
+ <xsl:template name="namespace-synopsis">
+ <xsl:param name="indentation" select="0"/>
+ <!-- Open namespace-->
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="concat('namespace ',@name)"/>
+ </xsl:call-template>
+ <xsl:text> {</xsl:text>
+
+ <!-- Emit namespace types -->
+ <xsl:apply-templates select="class|class-specialization|
+ struct|struct-specialization|
+ union|union-specialization|
+ typedef|enum|data-member" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:apply-templates>
+
+ <!-- Emit namespace functions -->
+ <xsl:apply-templates
+ select="free-function-group|function|overloaded-function"
+ mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:apply-templates>
+
+ <!-- Emit namespaces -->
+ <xsl:apply-templates select="namespace" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:apply-templates>
+
+ <!-- Close namespace -->
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:text>}</xsl:text>
+ </xsl:template>
+
+ <!-- Emit namespace synopsis -->
+ <xsl:template match="namespace" mode="synopsis">
+ <xsl:param name="indentation" select="0"/>
+
+ <xsl:choose>
+ <xsl:when test="count(ancestor::namespace)=0">
+ <xsl:call-template name="namespace-synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="namespace-synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Emit namespace reference -->
+ <xsl:template match="namespace" mode="reference">
+ <xsl:apply-templates select="namespace|typedef|free-function-group"
+ mode="reference">
+ <xsl:with-param name="indentation" select="0"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates select="class|class-specialization|
+ struct|struct-specialization|
+ union|union-specialization|enum|function|
+ overloaded-function|data-member"
+ mode="namespace-reference"/>
+ </xsl:template>
+
+ <!-- Eat extra documentation when in the synopsis or reference sections -->
+ <xsl:template match="para|section" mode="synopsis"/>
+ <xsl:template match="para|section" mode="reference"/>
+
+ <!-- Comment mode tries to wipe out any extra spacing in the output -->
+ <xsl:template match="purpose" mode="comment">
+ <xsl:apply-templates mode="comment"/>
+ </xsl:template>
+
+ <xsl:template match="simpara|para" mode="comment">
+ <xsl:apply-templates select="text()|*" mode="comment"/>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="comment">
+ <xsl:value-of select="."/>
+ </xsl:template>
+
+ <xsl:template match="*" mode="comment">
+ <xsl:apply-templates select="." mode="annotation"/>
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/relative-href.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/relative-href.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/lib/lib.xsl"/>
+
+<!-- ==================================================================== -->
+
+<!-- Check if path is absolute
+
+ Not attempting to fully parse or validate absolute vs. relative URI.
+ Assumes an absolute url when $target matches the regex '^[a-zA-Z.+-]*:'
+
+ According to RFC1808, however, the colon (':') may also appear in a relative
+ URL. To workaround this limitation for relative links containing colons one
+ may use the alternatives below, instead.
+
+ For the relative URI this:that use ./this:that or this%3Athat, instead.
+-->
+<xsl:template name="is.absolute.uri">
+ <xsl:param name="uri"/>
+
+ <xsl:variable name="scheme1" select="substring-before($uri, ':')"/>
+ <xsl:variable name="scheme2" select="translate($scheme1, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.', '')"/>
+
+ <xsl:choose>
+ <xsl:when test="$scheme1 and not($scheme2)">1</xsl:when>
+ <xsl:otherwise>0</xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="href.target.relative">
+ <xsl:param name="target"/>
+ <xsl:param name="context" select="."/>
+
+ <xsl:variable name="isabsoluteuri">
+ <xsl:call-template name="is.absolute.uri">
+ <xsl:with-param name="uri" select="$target"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$isabsoluteuri='1'">
+ <xsl:value-of select="$target"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:variable name="href.to.uri" select="$target"/>
+ <xsl:variable name="href.from.uri">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="object" select="$context"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.to">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'A'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href.from">
+ <xsl:call-template name="trim.common.uri.paths">
+ <xsl:with-param name="uriA" select="$href.to.uri"/>
+ <xsl:with-param name="uriB" select="$href.from.uri"/>
+ <xsl:with-param name="return" select="'B'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="depth">
+ <xsl:call-template name="count.uri.path.depth">
+ <xsl:with-param name="filename" select="$href.from"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="href">
+ <xsl:call-template name="copy-string">
+ <xsl:with-param name="string" select="'../'"/>
+ <xsl:with-param name="count" select="$depth"/>
+ </xsl:call-template>
+ <xsl:value-of select="$href.to"/>
+ </xsl:variable>
+
+ <xsl:value-of select="$href"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/source-highlight.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/source-highlight.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+ <xsl:param name="boost.syntax.highlight">1</xsl:param>
+
+ <xsl:template name="source-highlight">
+ <xsl:param name="text" select="."/>
+ <xsl:choose>
+ <xsl:when test="$boost.syntax.highlight='1'">
+ <xsl:call-template name="highlight-text">
+ <xsl:with-param name="text" select="$text"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Perform C++ keyword highlighting on the given text -->
+ <xsl:template name="highlight-text">
+ <xsl:param name="text" select="."/>
+ <xsl:param name="keywords"
+ select="'asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while'"/>
+ <xsl:param name="best-match" select="''"/>
+
+ <!-- Determine the current keyword -->
+ <xsl:variable name="keyword">
+ <xsl:choose>
+ <xsl:when test="contains($keywords, ' ')">
+ <xsl:value-of select="substring-before($keywords, ' ')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$keywords"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Determine the set of keywords that are left -->
+ <xsl:variable name="keywords-left">
+ <xsl:if test="contains($keywords, ' ')">
+ <xsl:value-of select="substring-after($keywords, ' ')"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <!-- The set of characters that can be identifiers -->
+ <xsl:variable name="id-chars" select="'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'"/>
+
+ <xsl:variable name="X" select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'"/>
+
+ <xsl:choose>
+ <!-- Have we exhausted all keywords without finding any to highlight? -->
+ <xsl:when test="$keyword='' and $best-match=''">
+ <!-- Just copy the text -->
+ <xsl:copy-of select="$text"/>
+ </xsl:when>
+
+ <!-- Have we exhausted all keywords, but have one to highlight? If so,
+ make sure we didn't just find part of an identifier. -->
+ <xsl:when
+ test="$keyword='' and
+ not (starts-with(translate(substring-after($text, $best-match),
+ $id-chars, $X), 'X')) and
+ not (substring(translate(substring-before($text, $best-match),
+ $id-chars, $X),
+ string-length(substring-before($text,
+ $best-match)),
+ 1) = 'X')">
+ <!-- Copy text before this keyword -->
+ <xsl:value-of select="substring-before($text, $best-match)"/>
+
+ <!-- Highlight the keyword -->
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="$best-match"/>
+ </xsl:call-template>
+
+ <!-- Recurse on the rest of the text -->
+ <xsl:call-template name="highlight-text">
+ <xsl:with-param name="text"
+ select="substring-after($text, $best-match)"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- We thought we had a keyword to highlight, but it was part of an
+ identifier. So output all of the text up to (but not including!)
+ the last letter of the identifier, and try again to
+ highlight. -->
+ <xsl:when test="$keyword=''">
+ <xsl:value-of select="substring-before($text, $best-match)"/>
+ <xsl:value-of
+ select="substring($best-match, 1, string-length($best-match)-1)"/>
+ <xsl:call-template name="highlight-text">
+ <xsl:with-param name="text"
+ select="concat(substring($best-match, string-length($best-match),
+ 1), substring-after($text, $best-match))"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Does the text contain this keyword with a better match than we
+ previously had? -->
+ <xsl:when
+ test="contains($text, $keyword) and
+ (($best-match = '') or
+ (string-length(substring-before($text, $keyword)) &lt;
+ string-length(substring-before($text, $best-match))))">
+ <!-- Recurse with the current keyword as the new best match -->
+ <xsl:call-template name="highlight-text">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="keywords" select="$keywords-left"/>
+ <xsl:with-param name="best-match" select="$keyword"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <!-- Text does not contain this keyword. Just recurse normally -->
+ <xsl:otherwise>
+ <xsl:call-template name="highlight-text">
+ <xsl:with-param name="text" select="$text"/>
+ <xsl:with-param name="keywords" select="$keywords-left"/>
+ <xsl:with-param name="best-match" select="$best-match"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="*" mode="highlight">
+ <xsl:element name="{name(.)}">
+ <xsl:for-each select="./@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.)='last-revision'">
+ <xsl:attribute
+ name="rev:last-revision"
+ namespace="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
+>
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="{name(.)}">
+ <xsl:value-of select="."/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="highlight"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="highlight">
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="."/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="classname|methodname|functionname|libraryname|enumname|
+ conceptname|macroname" mode="highlight">
+ <xsl:apply-templates select="." mode="annotation"/>
+ </xsl:template>
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/template.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/template.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,443 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+ <!-- Determine the length of a template header synopsis -->
+ <xsl:template name="template.synopsis.length">
+ <xsl:variable name="text">
+ <xsl:apply-templates select="template" mode="synopsis">
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="wrap" select="false()"/>
+ <xsl:with-param name="highlight" select="false()"/>
+ </xsl:apply-templates>
+ </xsl:variable>
+ <xsl:value-of select="string-length($text)"/>
+ </xsl:template>
+
+ <!-- Determine the length of a template header reference -->
+ <xsl:template name="template.reference.length">
+ <xsl:choose>
+ <xsl:when test="not(template)">
+ 0
+ </xsl:when>
+ <xsl:when test="template/*/purpose">
+ <!-- TBD: The resulting value need only be greater than the number of
+ columns. We chose to add 17 because it's funny for C++
+ programmers. :) -->
+ <xsl:value-of select="$max-columns + 17"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="template.synopsis.length"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Output a template header in synopsis mode -->
+ <xsl:template match="template" mode="synopsis">
+ <xsl:param name="indentation" select="0"/>
+ <xsl:param name="wrap" select="true()"/>
+ <xsl:param name="highlight" select="true()"/>
+
+ <xsl:call-template name="template.synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Output a template header in reference mode -->
+ <xsl:template match="template" mode="reference">
+ <xsl:param name="indentation" select="0"/>
+ <xsl:param name="highlight" select="true()"/>
+ <xsl:call-template name="template.reference">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Emit a template header synopsis -->
+ <xsl:template name="template.synopsis">
+ <xsl:param name="indentation" select="0"/>
+ <xsl:param name="wrap" select="true()"/>
+ <xsl:param name="highlight" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$highlight">
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="'template'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>template</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&lt;</xsl:text>
+ <xsl:call-template name="template.synopsis.parameters">
+ <xsl:with-param name="indentation" select="$indentation + 9"/>
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+ <xsl:text>&gt; </xsl:text>
+ </xsl:template>
+
+ <!-- Display a list of template parameters for a synopsis (no comments) -->
+ <xsl:template name="template.synopsis.parameters">
+ <xsl:param name="indentation"/>
+ <xsl:param name="wrap" select="true()"/>
+ <xsl:param name="highlight" select="true()"/>
+
+ <xsl:param name="column" select="$indentation"/>
+ <xsl:param name="prefix" select="''"/>
+ <xsl:param name="parameters" select="template-type-parameter|template-varargs|template-nontype-parameter"/>
+ <xsl:param name="first-on-line" select="true()"/>
+
+ <xsl:if test="$parameters">
+ <!-- Emit the prefix (either a comma-space, or empty if this is
+ the first parameter) -->
+ <xsl:value-of select="$prefix"/>
+
+ <!-- Get the actual parameter and its attributes -->
+ <xsl:variable name="parameter" select="$parameters[position()=1]"/>
+ <xsl:variable name="rest" select="$parameters[position()!=1]"/>
+
+ <!-- Compute the actual text of this parameter -->
+ <xsl:variable name="text">
+ <xsl:call-template name="template.parameter">
+ <xsl:with-param name="parameter" select="$parameter"/>
+ <xsl:with-param name="is-last" select="not(rest)"/>
+ <xsl:with-param name="highlight" select="false()"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Where will this template parameter finish? -->
+ <xsl:variable name="end-column"
+ select="$column + string-length($prefix) + string-length($text)"/>
+
+ <!-- Should the text go on this line or on the next? -->
+ <xsl:choose>
+ <xsl:when test="$first-on-line or ($end-column &lt; $max-columns) or
+ not($wrap)">
+ <!-- Print on this line -->
+ <xsl:call-template name="template.parameter">
+ <xsl:with-param name="parameter" select="$parameter"/>
+ <xsl:with-param name="is-last" select="not($rest)"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+
+ <!-- Recurse -->
+ <xsl:call-template name="template.synopsis.parameters">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ <xsl:with-param name="column" select="$end-column"/>
+ <xsl:with-param name="prefix" select="', '"/>
+ <xsl:with-param name="parameters" select="$rest"/>
+ <xsl:with-param name="first-on-line" select="false()"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Print on next line -->
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:call-template name="template.parameter">
+ <xsl:with-param name="parameter" select="$parameter"/>
+ <xsl:with-param name="is-last" select="not($rest)"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="template.synopsis.parameters">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="wrap" select="$wrap"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ <xsl:with-param name="column"
+ select="$indentation + string-length($text)"/>
+ <xsl:with-param name="prefix" select="', '"/>
+ <xsl:with-param name="parameters" select="$rest"/>
+ <xsl:with-param name="first-on-line" select="false()"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Emit a template header reference -->
+ <xsl:template name="template.reference">
+ <xsl:param name="indentation" select="0"/>
+ <xsl:param name="highlight" select="true()"/>
+
+ <xsl:if test="template-type-parameter|template-varargs|template-nontype-parameter">
+ <xsl:choose>
+ <xsl:when test="$highlight">
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="'template'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>template</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&lt;</xsl:text>
+ <xsl:call-template name="template.reference.parameters">
+ <xsl:with-param name="indentation" select="$indentation + 9"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+ <xsl:text>&gt; </xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Display a set of template parameters for a reference -->
+ <xsl:template name="template.reference.parameters">
+ <xsl:param name="indentation"/>
+ <xsl:param name="highlight" select="true()"/>
+ <xsl:param name="parameters" select="template-type-parameter|template-varargs|template-nontype-parameter"/>
+
+ <xsl:choose>
+ <xsl:when test="$parameters/purpose">
+ <xsl:call-template name="template.reference.parameters.comments">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="template.synopsis.parameters">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="wrap" select="true()"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Output template parameters when there are comments with the parameters.
+ For clarity, we output each template parameter on a separate line. -->
+ <xsl:template name="template.reference.parameters.comments">
+ <xsl:param name="indentation"/>
+ <xsl:param name="highlight" select="true()"/>
+ <xsl:param name="parameters" select="template-type-parameter|template-varargs|template-nontype-parameter"/>
+
+ <xsl:if test="$parameters">
+ <!-- Get the actual parameter and its attributes -->
+ <xsl:variable name="parameter" select="$parameters[position()=1]"/>
+ <xsl:variable name="rest" select="$parameters[position()!=1]"/>
+
+ <!-- Display the parameter -->
+ <xsl:call-template name="template.parameter">
+ <xsl:with-param name="parameter" select="$parameter"/>
+ <xsl:with-param name="is-last" select="not($rest)"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+
+ <xsl:if test="$rest">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+
+ <!-- Display the comment -->
+ <xsl:if test="$parameter/purpose">
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text">
+ <xsl:text> // </xsl:text>
+ <xsl:apply-templates
+ select="$parameter/purpose/*|$parameter/purpose/text()"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- Indent the next line -->
+ <xsl:if test="$parameter/purpose or $rest">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- Recurse to print the rest of the parameters -->
+ <xsl:call-template name="template.reference.parameters.comments">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ <xsl:with-param name="parameters" select="$rest"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Print a template parameter -->
+ <xsl:template name="template.parameter">
+ <xsl:param name="parameter"/>
+ <xsl:param name="is-last"/>
+ <xsl:param name="highlight" select="true()"/>
+ <xsl:apply-templates select="$parameter"
+ mode="print.parameter">
+ <xsl:with-param name="parameter" select="$parameter"/>
+ <xsl:with-param name="is-last" select="$is-last"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template name="template.parameter.name">
+ <xsl:param name="name" select="@name"/>
+ <xsl:param name="highlight" select="true()"/>
+
+ <xsl:choose>
+ <xsl:when test="$highlight">
+ <xsl:call-template name="concept.link">
+ <xsl:with-param name="name"
+ select="translate($name, '0123456789', '')"/>
+ <xsl:with-param name="text" select="$name"/>
+ <xsl:with-param name="warn" select="false"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="template-type-parameter" mode="print.parameter">
+ <xsl:param name="parameter"/>
+ <xsl:param name="is-last"/>
+ <xsl:param name="highlight"/>
+
+ <xsl:choose>
+ <xsl:when test="$highlight">
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="'typename'"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>typename</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> </xsl:text>
+
+ <xsl:call-template name="template.parameter.name">
+ <xsl:with-param name="name" select="$parameter/@name"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+
+ <xsl:variable name="def">
+ <xsl:choose>
+ <xsl:when test="$parameter/@default">
+ <xsl:message>
+ <xsl:text>Warning: 'default' attribute of template parameter element is deprecated. Use 'default' element.</xsl:text>
+ <xsl:call-template name="print.warning.context"/>
+ </xsl:message>
+ <xsl:choose>
+ <xsl:when test="$highlight and false()">
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text">
+ <xsl:value-of select="$parameter/@default"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$parameter/@default"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:when test="$parameter/default">
+ <xsl:choose>
+ <xsl:when test="$highlight">
+ <xsl:apply-templates
+ select="$parameter/default/*|$parameter/default/text()"
+ mode="highlight"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string($parameter/default)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:if test="not($def='')">
+ <xsl:text> = </xsl:text>
+
+ <xsl:copy-of select="$def"/>
+
+ <!-- If this is the last parameter, add an extra space to
+ avoid printing >> -->
+ <xsl:if
+ test="$is-last and (substring($def, string-length($def))='&gt;')">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="template-nontype-parameter" mode="print.parameter">
+ <xsl:param name="parameter"/>
+ <xsl:param name="is-last"/>
+ <xsl:param name="highlight"/>
+
+ <xsl:choose>
+ <xsl:when test="$highlight">
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text">
+ <xsl:apply-templates
+ select="$parameter/type/*|$parameter/type/text()"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$parameter/type/*|$parameter/type/text()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text> </xsl:text>
+
+ <xsl:call-template name="template.parameter.name">
+ <xsl:with-param name="name" select="$parameter/@name"/>
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:call-template>
+
+ <xsl:variable name="def">
+ <xsl:value-of select="string($parameter/default)"/>
+ </xsl:variable>
+
+ <xsl:if test="not($def='')">
+ <xsl:text> = </xsl:text>
+
+ <xsl:choose>
+ <xsl:when test="$highlight">
+ <xsl:apply-templates select="$parameter/default/*|$parameter/default/text()" mode="highlight"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$def"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- If this is the last parameter, add an extra space to
+ avoid printing >> -->
+ <xsl:if
+ test="$is-last and (substring($def, string-length($def))='&gt;')">
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="template-varargs" mode="print.parameter">
+ <xsl:text>...</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="specialization">
+ <xsl:param name="highlight" select="true()"/>
+ <xsl:text>&lt;</xsl:text>
+ <xsl:apply-templates select="template-arg">
+ <xsl:with-param name="highlight" select="$highlight"/>
+ </xsl:apply-templates>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:template>
+
+ <xsl:template match="template-arg">
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:apply-templates mode="highlight"/>
+ </xsl:template>
+</xsl:stylesheet>
+

Added: sandbox/doc_test/XSL/type.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/type.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,1300 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:include href="global.xsl"/>
+ <xsl:strip-space elements="inherit purpose"/>
+
+ <!-- When true, the stylesheet will emit compact definitions of
+ enumerations when the enumeration does not have any detailed
+ description. A compact definition renders the enum definition along
+ with a comment for the purpose of the enum (if it exists) directly
+ within the synopsis. A non-compact definition will create a
+ separate refentry element for the enum. -->
+ <xsl:param name="boost.compact.enum">1</xsl:param>
+
+ <!-- When true, the stylesheet will emit compact definitions of
+ typedefs when the typedef does not have any detailed
+ description. -->
+ <xsl:param name="boost.compact.typedef">1</xsl:param>
+
+ <xsl:template match="class|struct|union" mode="generate.id">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="separator" select="'.'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="typedef" mode="generate.id">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="separator" select="'.'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="enum" mode="generate.id">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="separator" select="'.'"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="enumvalue" mode="generate.id">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="parent::enum"/>
+ <xsl:with-param name="separator" select="'.'"/>
+ </xsl:call-template>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:template>
+
+ <!-- Display the full name of the current node, e.g., "Class
+ template function". -->
+ <xsl:template name="type.display.name">
+ <xsl:choose>
+ <xsl:when test="contains(local-name(.), 'class')">
+ <xsl:text>Class </xsl:text>
+ </xsl:when>
+ <xsl:when test="contains(local-name(.), 'struct')">
+ <xsl:text>Struct </xsl:text>
+ </xsl:when>
+ <xsl:when test="contains(local-name(.), 'union')">
+ <xsl:text>Union </xsl:text>
+ </xsl:when>
+ <xsl:when test="local-name(.)='enum'">
+ <xsl:text>Type </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+Unknown type element "<xsl:value-of select="local-name(.)"/>" in type.display.name
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="template and count(template/*) &gt; 0">
+ <xsl:text>template </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text">
+ <xsl:value-of select="@name"/>
+ <xsl:apply-templates select="specialization"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Determine the class key for the given node -->
+ <xsl:template name="type.class.key">
+ <xsl:param name="node" select="."/>
+ <xsl:choose>
+ <xsl:when test="contains(local-name($node), '-specialization')">
+ <xsl:value-of select="substring-before(local-name($node), '-')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="local-name($node)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Emit class synopsis -->
+ <xsl:template match="class|class-specialization|
+ struct|struct-specialization|
+ union|union-specialization" mode="synopsis">
+ <xsl:param name="indentation"/>
+
+ <!-- The keyword used to declare this class type, e.g., class,
+ struct, or union. -->
+ <xsl:variable name="class-key">
+ <xsl:call-template name="type.class.key"/>
+ </xsl:variable>
+
+ <!-- Spacing -->
+ <xsl:if test="not (local-name(preceding-sibling::*[position()=1])=local-name(.)) and (position() &gt; 1)">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- Calculate how long this declaration would be if we put it all
+ on one line -->
+ <xsl:variable name="full-decl-string">
+ <xsl:apply-templates select="template" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="wrap" select="false()"/>
+ </xsl:apply-templates>
+ <xsl:value-of select="$class-key"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:apply-templates select="specialization"/>
+ <xsl:text>;</xsl:text>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="(string-length($full-decl-string) +
+ string-length($indentation)) &lt; $max-columns">
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="template" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="$class-key"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <xsl:value-of select="@name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:apply-templates select="specialization"/>
+ <xsl:text>;</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- Template header -->
+ <xsl:if test="template">
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="template" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- Indent class templates' names in the synopsis -->
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <!-- Class name -->
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="$class-key"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="string(@name)"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="specialization"/>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- Free functions associated with the class -->
+ <xsl:apply-templates select="free-function-group" mode="header-synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="class" select="@name"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- Emit a typedef synopsis -->
+ <xsl:template name="type.typedef.display.aligned">
+ <xsl:param name="compact"/>
+ <xsl:param name="indentation"/>
+ <xsl:param name="is-reference"/>
+ <xsl:param name="max-type-length"/>
+ <xsl:param name="max-name-length"/>
+
+ <!-- What type of link the typedef name should have. This shall
+ be one of 'anchor' (the typedef output will be the target of
+ links), 'link' (the typedef output will link to a definition), or
+ 'none' (the typedef output will not be either a link or a link
+ target) -->
+ <xsl:param name="link-type">
+ <xsl:choose>
+ <xsl:when test="$is-reference">
+ <xsl:text>anchor</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>link</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
+ <!-- The id we should link to or anchor as -->
+ <xsl:param name="link-to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:param>
+
+ <!-- The id we should link to or anchor as -->
+ <xsl:param name="typedef-name">
+ <xsl:value-of select="@name"/>
+ </xsl:param>
+
+ <!-- Padding for the typedef types -->
+ <xsl:variable name="type-padding">
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$max-type-length"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <!-- Padding for the typedef names -->
+ <xsl:variable name="name-padding">
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$max-name-length"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:text>&#10;</xsl:text>
+ <xsl:choose>
+ <!-- Create a vertical ellipsis -->
+ <xsl:when test="@name = '...'">
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation + 3"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation + 3"/>
+ </xsl:call-template>
+ <xsl:text>.&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation + 3"/>
+ </xsl:call-template>
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="'typedef'"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+
+ <!-- Length of the type -->
+ <xsl:variable name="type-length">
+ <xsl:choose>
+ <xsl:when test="@type">
+ <xsl:message>
+ <xsl:text>Warning: `type' attribute of `typedef' element is deprecated. Use 'type' element instead.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="print.warning.context"/>
+ <xsl:value-of select="string-length(@type)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string-length(type)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Emit the type -->
+ <xsl:choose>
+ <xsl:when test="@type">
+ <xsl:value-of select="@type"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="type/*|type/text()"
+ mode="highlight"/>
+ <!--
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text">
+ <xsl:apply-templates select="type/*|type/text()"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:choose>
+ <xsl:when test="$max-type-length &gt; 0">
+ <xsl:value-of select="substring($type-padding, 1,
+ $max-type-length - $type-length)"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="substring(concat(@name, ';', $name-padding),
+ 1, $max-name-length)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="link-or-anchor">
+ <xsl:with-param name="to" select="$link-to"/>
+ <xsl:with-param name="text" select="$typedef-name"/>
+ <xsl:with-param name="link-type" select="$link-type"/>
+ <xsl:with-param name="highlight" select="true()"/>
+ </xsl:call-template>
+ <xsl:text>;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$compact and purpose">
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text">
+ <xsl:text>// </xsl:text>
+ <xsl:apply-templates select="purpose" mode="comment"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="typedef" mode="synopsis">
+ <xsl:param name="indentation"/>
+ <xsl:param name="max-type-length" select="0"/>
+ <xsl:param name="max-name-length" select="0"/>
+
+ <!-- True if we should compact this typedef -->
+ <xsl:variable name="compact"
+ select="not (para|description) and ($boost.compact.typedef='1')"/>
+
+ <xsl:choose>
+ <xsl:when test="$compact">
+ <!-- Spacing -->
+ <xsl:if test="not (local-name(preceding-sibling::*[position()=1])=local-name(.)) and (position() &gt; 1)">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ <xsl:call-template name="type.typedef.display.aligned">
+ <xsl:with-param name="compact" select="$compact"/>
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="max-type-length" select="$max-type-length"/>
+ <xsl:with-param name="max-name-length" select="$max-name-length"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="type.typedef.display.aligned">
+ <xsl:with-param name="compact" select="$compact"/>
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="is-reference" select="false()"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Emit a typedef reference entry -->
+ <xsl:template match="typedef" mode="reference">
+ <!-- True if this typedef was compacted -->
+ <xsl:variable name="compact"
+ select="not (para|description) and ($boost.compact.typedef='1')"/>
+
+ <xsl:if test="not ($compact)">
+ <xsl:call-template name="reference-documentation">
+ <xsl:with-param name="refname" select="@name"/>
+ <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
+ <xsl:with-param name="anchor">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="name">
+ <xsl:text>Type definition </xsl:text>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="@name"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="synopsis">
+ <xsl:call-template name="type.typedef.display.aligned">
+ <xsl:with-param name="compact" select="false()"/>
+ <xsl:with-param name="indentation" select="0"/>
+ <xsl:with-param name="is-reference" select="true()"/>
+ <xsl:with-param name="link-type" select="'none'"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <xsl:apply-templates select="description"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Emit a list of static constants -->
+ <xsl:template match="static-constant" mode="synopsis">
+ <xsl:param name="indentation"/>
+ <xsl:text>&#10;</xsl:text>
+
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text" select="'static const '"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text">
+ <xsl:apply-templates select="type/*|type/text()"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:if test="not(@name = '')">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:if>
+
+ <xsl:text> = </xsl:text>
+
+ <xsl:call-template name="source-highlight">
+ <xsl:with-param name="text">
+ <xsl:apply-templates select="default/*|default/text()"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>;</xsl:text>
+
+ <xsl:if test="purpose">
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text">
+ <xsl:text>// </xsl:text>
+ <xsl:apply-templates select="purpose" mode="comment"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Format base classes on a single line -->
+ <xsl:template name="print.base.classes.single">
+ <xsl:apply-templates select="inherit"/>
+ </xsl:template>
+
+ <xsl:template name="print.base.classes.multi">
+ <xsl:param name="indentation"/>
+
+ <xsl:variable name="n" select="count(inherit)"/>
+ <xsl:for-each select="inherit">
+ <!-- Indentation -->
+ <xsl:if test="position() &gt; 1">
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- Output the access specifier -->
+ <xsl:variable name="access">
+ <xsl:choose>
+ <xsl:when test="@access">
+ <xsl:value-of select="@access"/>
+ </xsl:when>
+ <xsl:when test="parent::class|parent::class-specialization">
+ <xsl:text>private</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>public</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="@access"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+
+ <!-- Output the type -->
+ <xsl:choose>
+ <xsl:when test="type">
+ <xsl:apply-templates select="type/*|type/text()" mode="annotation"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates mode="annotation"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- Output a comma if not at the end -->
+ <xsl:if test="position() &lt; $n">
+ <xsl:text>,</xsl:text>
+ </xsl:if>
+
+ <!-- Output a comment if we have one -->
+ <xsl:if test="purpose">
+ <xsl:choose>
+ <xsl:when test="position() &lt; $n">
+ <xsl:text> </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text">
+ <xsl:text>// </xsl:text>
+ <xsl:apply-templates select="purpose/*|purpose/text()"
+ mode="annotation"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="position() &lt; $n">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template name="print.base.classes">
+ <xsl:param name="indentation" select="0"/>
+ <xsl:param name="base-indentation" select="0"/>
+
+ <xsl:variable name="single-line-candidate" select="not(inherit/purpose)"/>
+ <xsl:variable name="single-line">
+ <xsl:if test="$single-line-candidate">
+ <xsl:call-template name="print.base.classes.single"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$single-line-candidate and
+ (string-length($single-line) + $indentation + 3
+ &lt; $max-columns)">
+ <xsl:call-template name="print.base.classes.single"/>
+ <xsl:text> {</xsl:text>
+ </xsl:when>
+ <xsl:when test="$single-line-candidate and
+ (string-length($single-line) + $base-indentation + 5
+ &lt; $max-columns)">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$base-indentation"/>
+ </xsl:call-template>
+ <xsl:text> : </xsl:text>
+ <xsl:call-template name="print.base.classes.single"/>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$base-indentation"/>
+ </xsl:call-template>
+ <xsl:text>{</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text> : </xsl:text>
+ <xsl:call-template name="print.base.classes.multi">
+ <xsl:with-param name="indentation" select="$indentation + 3"/>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$base-indentation"/>
+ </xsl:call-template>
+ <xsl:text>{</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Emit a list of base classes without comments and on a single line -->
+ <xsl:template match="inherit">
+ <xsl:choose>
+ <xsl:when test="position()=1">
+ <xsl:text> : </xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>, </xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="@access"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:apply-templates mode="annotation">
+ <xsl:with-param name="highlight" select="true()"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <!-- Find the maximum length of the types in typedefs -->
+ <xsl:template name="find-max-type-length">
+ <xsl:param name="typedefs" select="typedef"/>
+ <xsl:param name="max-length" select="0"/>
+ <xsl:param name="want-name" select="false()"/>
+
+ <xsl:choose>
+ <xsl:when test="$typedefs">
+ <xsl:variable name="typedef" select="$typedefs[position()=1]"/>
+ <xsl:variable name="rest" select="$typedefs[position()!=1]"/>
+
+ <!-- Find the length of the type -->
+ <xsl:variable name="length">
+ <xsl:choose>
+ <xsl:when test="$typedef/@name != '...'">
+ <xsl:choose>
+ <xsl:when test="$want-name">
+ <xsl:value-of select="string-length($typedef/@name) + 1"/>
+ </xsl:when>
+ <xsl:when test="$typedef/@type">
+ <xsl:value-of select="string-length($typedef/@type)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="string-length($typedef/type)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ 0
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Pass on the larger length -->
+ <xsl:choose>
+ <xsl:when test="$length &gt; $max-length">
+ <xsl:call-template name="find-max-type-length">
+ <xsl:with-param name="typedefs" select="$rest"/>
+ <xsl:with-param name="max-length" select="$length"/>
+ <xsl:with-param name="want-name" select="$want-name"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="find-max-type-length">
+ <xsl:with-param name="typedefs" select="$rest"/>
+ <xsl:with-param name="max-length" select="$max-length"/>
+ <xsl:with-param name="want-name" select="$want-name"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$max-length"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="constructor" mode="synopsis">
+ <xsl:param name="indentation"/>
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="context" select="../@name"/>
+ <xsl:with-param name="is-reference" select="false()"/>
+ <xsl:with-param name="constructor-for" select="../@name"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="copy-assignment" mode="synopsis">
+ <xsl:param name="indentation"/>
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="context" select="../@name"/>
+ <xsl:with-param name="is-reference" select="false()"/>
+ <xsl:with-param name="copy-assign-for" select="../@name"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="destructor" mode="synopsis">
+ <xsl:param name="indentation"/>
+ <xsl:call-template name="function">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="context" select="../@name"/>
+ <xsl:with-param name="is-reference" select="false()"/>
+ <xsl:with-param name="destructor-for" select="../@name"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="class-type-synopsis">
+ <xsl:param name="indentation" select="0"/>
+
+ <!-- The keyword used to declare this class type, e.g., class,
+ struct, or union. -->
+ <xsl:variable name="class-key">
+ <xsl:call-template name="type.class.key"/>
+ </xsl:variable>
+
+ <xsl:if test="ancestor::class|ancestor::class-specialization|
+ ancestor::struct|ancestor::struct-specialization|
+ ancestor::union|ancestor::union-specialization">
+ <xsl:text>&#10;&#10;</xsl:text>
+
+ <!-- If this nested class has a "purpose" element, use it as a
+ comment. -->
+ <xsl:if test="purpose">
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text">
+ <xsl:text>// </xsl:text>
+ <xsl:apply-templates select="purpose" mode="comment"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ </xsl:if>
+
+ <!-- Template header -->
+ <xsl:if test="template">
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="template" mode="reference">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- Class name -->
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="$class-key"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:apply-templates select="specialization"/>
+
+ <xsl:choose>
+ <xsl:when test="inherit">
+ <!-- Base class list (with opening brace) -->
+ <xsl:call-template name="print.base.classes">
+ <xsl:with-param name="indentation"
+ select="string-length($class-key) + string-length(@name)
+ + $indentation + 1"/>
+ <xsl:with-param name="base-indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Opening brace -->
+ <xsl:text> {</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- Public designator -->
+ <xsl:if test="contains(local-name(.), 'class')">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="'public'"/>
+ </xsl:call-template>
+ <xsl:text>:</xsl:text>
+ </xsl:if>
+
+ <!-- Typedefs -->
+ <xsl:if test="typedef">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:call-template>
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text" select="'// types'"/>
+ </xsl:call-template>
+
+ <xsl:variable name="max-type-length">
+ <xsl:call-template name="find-max-type-length"/>
+ </xsl:variable>
+ <xsl:variable name="max-name-length">
+ <xsl:call-template name="find-max-type-length">
+ <xsl:with-param name="want-name" select="true()"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:apply-templates select="typedef" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ <xsl:with-param name="max-type-length"
+ select="$max-type-length"/>
+ <xsl:with-param name="max-name-length"
+ select="$max-name-length"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <!-- Static constants -->
+ <xsl:if test="static-constant">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="typedef">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:call-template>
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text" select="'// static constants'"/>
+ </xsl:call-template>
+ <xsl:apply-templates select="static-constant" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:apply-templates>
+ </xsl:if>
+
+ <!-- Nested classes/structs/unions -->
+ <xsl:apply-templates select="class|class-specialization|
+ struct|struct-specialization|
+ union|union-specialization"
+ mode="reference">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:apply-templates>
+
+ <!-- Enums -->
+ <xsl:apply-templates select="enum" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:apply-templates>
+
+ <!-- Construct/Copy/Destruct -->
+ <xsl:call-template name="construct-copy-destruct-synopsis">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:call-template>
+
+ <!-- Member functions -->
+ <xsl:apply-templates
+ select="method-group|method|overloaded-method"
+ mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:apply-templates>
+
+ <!-- Data members -->
+ <xsl:apply-templates select="data-member" mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation + 2"/>
+ </xsl:apply-templates>
+
+ <!-- Closing brace -->
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <xsl:text>};</xsl:text>
+ </xsl:template>
+
+ <!-- Emit nested class reference documentation -->
+ <xsl:template match="class|class-specialization|
+ struct|struct-specialization|
+ union|union-specialization" mode="reference">
+ <xsl:param name="indentation"/>
+
+ <xsl:call-template name="class-type-synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Emit namespace-level class reference documentation -->
+ <xsl:template match="class|class-specialization|
+ struct|struct-specialization|
+ union|union-specialization" mode="namespace-reference">
+ <xsl:param name="indentation" select="0"/>
+
+ <xsl:call-template name="separator"/>
+ <xsl:call-template name="reference-documentation">
+ <xsl:with-param name="refname">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
+ <xsl:with-param name="anchor">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="name">
+ <xsl:call-template name="type.display.name"/>
+ </xsl:with-param>
+ <xsl:with-param name="synopsis">
+ <xsl:call-template name="class-type-synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ <!-- Associated free functions -->
+ <xsl:apply-templates select="ancestor-or-self::*/free-function-group"
+ mode="synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="class" select="@name"/>
+ </xsl:apply-templates>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <!-- Paragraphs go into the top of the "Description" section. -->
+ <xsl:if test="para">
+ <xsl:message>
+ <xsl:text>Warning: Use of 'para' elements in 'class' element is deprecated.&#10;Wrap them in a 'description' element.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="print.warning.context"/>
+ <xsl:apply-templates select="para" mode="annotation"/>
+ </xsl:if>
+ <xsl:apply-templates select="description"/>
+
+ <xsl:call-template name="construct-copy-destruct-reference"/>
+
+ <xsl:apply-templates
+ select="method-group|method|overloaded-method"
+ mode="reference"/>
+
+ <!-- Emit reference docs for nested classes -->
+ <xsl:apply-templates
+ select="class|class-specialization|
+ struct|struct-specialization|
+ union|union-specialization"
+ mode="namespace-reference"/>
+
+ <!-- Emit reference docs for nested enums -->
+ <xsl:apply-templates
+ select="enum"
+ mode="namespace-reference"/>
+
+ <xsl:apply-templates select="free-function-group" mode="reference">
+ <xsl:with-param name="class" select="@name"/>
+ </xsl:apply-templates>
+
+ <!-- Specializations of this class -->
+ <!-- TBD: fix this. We should key off the class name and match
+ fully-qualified names -->
+ <xsl:variable name="name" select="@name"/>
+ <xsl:if test="local-name(.)='class' and
+ ../class-specialization[@name=$name]">
+ <refsect2>
+ <title>Specializations</title>
+ <itemizedlist>
+ <xsl:apply-templates
+ select="../class-specialization[@name=$name]"
+ mode="specialization-list"/>
+ </itemizedlist>
+ </refsect2>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Output a link to a specialization -->
+ <xsl:template match="class-specialization|
+ struct-specialization|
+ union-specialization" mode="specialization-list">
+ <listitem>
+ <para>
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text">
+ <xsl:call-template name="type.display.name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ </para>
+ </listitem>
+ </xsl:template>
+
+ <!-- Data member synopsis -->
+ <xsl:template match="data-member" mode="synopsis">
+ <xsl:param name="indentation"/>
+
+ <xsl:choose>
+ <xsl:when test="ancestor::class|ancestor::class-specialization|
+ ancestor::struct|ancestor::struct-specialization|
+ ancestor::union|ancestor::union-specialization">
+
+ <!-- Spacing -->
+ <xsl:if
+ test="not(local-name(preceding-sibling::*[position()=1])=local-name(.))">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ <!-- Indent -->
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+
+ <xsl:if test="@specifiers">
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="@specifiers"/>
+ </xsl:call-template>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:apply-templates select="type/*|type/text()" mode="annotation"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>
+ <xsl:text>;</xsl:text>
+
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="global-synopsis">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Data member reference -->
+ <xsl:template match="data-member" mode="reference">
+ <xsl:choose>
+ <xsl:when test="ancestor::class|ancestor::class-specialization|
+ ancestor::struct|ancestor::struct-specialization|
+ ancestor::union|ancestor::union-specialization"/>
+ <xsl:otherwise>
+ <xsl:call-template name="global-reference"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Enumeration synopsis -->
+ <xsl:template match="enum" mode="synopsis">
+ <xsl:param name="indentation"/>
+
+ <!-- Spacing -->
+ <xsl:if
+ test="(not (local-name(preceding-sibling::*[position()=1])=local-name(.))
+ and (position() &gt; 1)) or
+ not (para or description or not ($boost.compact.enum=1))">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ <!-- Indent -->
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+
+ <xsl:choose>
+ <!-- When there is a detailed description, we only put the
+ declaration in the synopsis and will put detailed documentation
+ in either a <refentry/> or in class documentation. -->
+ <xsl:when test="para or description or not ($boost.compact.enum=1)">
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="'enum'"/>
+ </xsl:call-template>
+
+ <xsl:text> </xsl:text>
+
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="string(@name)"/>
+ <xsl:with-param name="higlhight" select="false()"/>
+ </xsl:call-template>
+ </xsl:when>
+ <!-- When there is no detailed description, we put the enum
+ definition within the synopsis. The purpose of the enum (if
+ available) is formatted as a comment prior to the
+ definition. This way, we do not create a separate block of text
+ for what is generally a very small amount of information. -->
+ <xsl:otherwise>
+ <xsl:if test="purpose">
+ <xsl:call-template name="highlight-comment">
+ <xsl:with-param name="text">
+ <xsl:text>// </xsl:text>
+ <xsl:apply-templates select="purpose/*|purpose/text()" mode="annotation"/>
+ </xsl:with-param>
+ </xsl:call-template>
+
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="'enum'"/>
+ </xsl:call-template>
+
+ <xsl:text> </xsl:text>
+
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="@name"/>
+ <xsl:with-param name="higlhight" select="false()"/>
+ </xsl:call-template>
+
+ <xsl:text> { </xsl:text>
+ <xsl:call-template name="type.enum.list.compact">
+ <xsl:with-param name="indentation"
+ select="$indentation + string-length(@name) + 8"/>
+ <xsl:with-param name="compact" select="true()"/>
+ </xsl:call-template>
+ <xsl:text> }</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>;</xsl:text>
+ </xsl:template>
+
+ <!-- Enumeration reference at namespace level -->
+ <xsl:template match="enum" mode="namespace-reference">
+ <xsl:if test="para or description or not ($boost.compact.enum=1)">
+ <xsl:call-template name="reference-documentation">
+ <xsl:with-param name="name">
+ <xsl:call-template name="type.display.name"/>
+ </xsl:with-param>
+ <xsl:with-param name="refname">
+ <xsl:call-template name="fully-qualified-name">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
+ <xsl:with-param name="anchor">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="synopsis">
+ <xsl:call-template name="type.enum.display"/>
+ </xsl:with-param>
+
+ <xsl:with-param name="text">
+ <!-- Paragraphs go into the top of the "Description" section. -->
+ <xsl:if test="para">
+ <xsl:message>
+ <xsl:text>Warning: Use of 'para' elements in 'enum' element is deprecated.&#10;Wrap them in a 'description' element.</xsl:text>
+ </xsl:message>
+ <xsl:call-template name="print.warning.context"/>
+ <xsl:apply-templates select="para" mode="annotation"/>
+ </xsl:if>
+ <xsl:apply-templates select="description"/>
+ <variablelist spacing="compact">
+ <xsl:apply-templates select="enumvalue" mode="reference"/>
+ </variablelist>
+ </xsl:with-param>
+
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Output an enumeration along with its values -->
+ <xsl:template name="type.enum.display">
+ <!-- Spacing -->
+ <xsl:if test="position() &gt; 1">
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+
+ <xsl:text>&#10;</xsl:text>
+
+ <xsl:call-template name="highlight-keyword">
+ <xsl:with-param name="keyword" select="'enum'"/>
+ </xsl:call-template>
+
+ <!-- Header -->
+ <xsl:variable name="header" select="concat(' ', @name, ' { ')"/>
+ <xsl:value-of select="$header"/>
+
+ <!-- Print the enumeration values -->
+ <xsl:call-template name="type.enum.list.compact">
+ <xsl:with-param name="indentation" select="4 + string-length($header)"/>
+ </xsl:call-template>
+
+ <xsl:text> };</xsl:text>
+ </xsl:template>
+
+ <!-- List enumeration values in a compact form e.g.,
+ enum Name { value1 = foo, value2 = bar, ... };
+ This routine prints only the enumeration values; the caller is
+ responsible for printing everything outside the braces
+ (inclusive). -->
+ <xsl:template name="type.enum.list.compact">
+ <xsl:param name="indentation"/>
+ <xsl:param name="compact" select="false()"/>
+
+ <!-- Internal: The column we are on -->
+ <xsl:param name="column" select="$indentation"/>
+
+ <!-- Internal: The index of the current enumvalue
+ we're processing -->
+ <xsl:param name="pos" select="1"/>
+
+ <!-- Internal: a prefix that we need to print prior to printing
+ this value. -->
+ <xsl:param name="prefix" select="''"/>
+
+ <xsl:if test="not($pos &gt; count(enumvalue))">
+ <xsl:variable name="value" select="enumvalue[position()=$pos]"/>
+
+ <!-- Compute the string to be printed for this value -->
+ <xsl:variable name="result">
+ <xsl:value-of select="$prefix"/>
+ <xsl:value-of select="$value/attribute::name"/>
+
+ <xsl:if test="$value/default">
+ <xsl:text> = </xsl:text>
+ <xsl:value-of select="$value/default/*|$value/default/text()"/>
+ </xsl:if>
+ </xsl:variable>
+
+ <!-- The column we will end on, assuming that this value fits on
+ this line -->
+ <xsl:variable name="end" select="$column + string-length($result)"/>
+
+ <!-- The column we will actually end on -->
+ <xsl:variable name="end2">
+ <xsl:choose>
+ <!-- If the enumeration value fits on this line, put it there -->
+ <xsl:when test="$end &lt; $max-columns">
+ <xsl:value-of select="$end"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$indentation
+ + string-length($result)
+ - string-length($prefix)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:value-of select="$prefix"/>
+
+ <!-- If the enumeration value doesn't fit on this line,
+ put it on a new line -->
+ <xsl:if test="not($end &lt; $max-columns)">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- If the enumeration value has a description, link it
+ to its description. -->
+ <xsl:choose>
+ <xsl:when test="($value/purpose or $value/description) and not($compact)">
+ <xsl:call-template name="internal-link">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id">
+ <xsl:with-param name="node" select="$value"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="$value/attribute::name"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$value/attribute::name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- If the enumeration value has a default,
+ print it. -->
+ <xsl:if test="$value/default">
+ <xsl:text> = </xsl:text>
+ <xsl:apply-templates
+ select="$value/default/*|$value/default/text()"/>
+ </xsl:if>
+
+ <!-- Recursively generate the rest of the enumeration list -->
+ <xsl:call-template name="type.enum.list.compact">
+ <xsl:with-param name="indentation" select="$indentation"/>
+ <xsl:with-param name="compact" select="$compact"/>
+ <xsl:with-param name="column" select="$end2"/>
+ <xsl:with-param name="pos" select="$pos + 1"/>
+ <xsl:with-param name="prefix" select="', '"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Enumeration reference at namespace level -->
+ <xsl:template match="enumvalue" mode="reference">
+ <xsl:if test="purpose or description">
+ <varlistentry>
+ <term>
+ <xsl:call-template name="monospaced">
+ <xsl:with-param name="text" select="@name"/>
+ </xsl:call-template>
+ <!-- Note: the anchor must come after the text here, and not
+ before it; otherwise, FOP goes into an infinite loop. -->
+ <xsl:call-template name="anchor">
+ <xsl:with-param name="to">
+ <xsl:call-template name="generate.id"/>
+ </xsl:with-param>
+ <xsl:with-param name="text" select="''"/>
+ </xsl:call-template>
+ </term>
+ <listitem>
+ <xsl:apply-templates
+ select="purpose/*|purpose/text()|
+ description/*|description/text()"
+ mode="annotation"/>
+ </listitem>
+ </varlistentry>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/utility.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/utility.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+ <!-- Indent the current line-->
+ <xsl:template name="indent">
+ <xsl:param name="indentation"/>
+ <xsl:if test="$indentation > 0">
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="indent">
+ <xsl:with-param name="indentation" select="$indentation - 1"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>

Added: sandbox/doc_test/XSL/xhtml.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/xhtml.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
+ version="1.0">
+
+ <!-- Import the HTML chunking stylesheet -->
+ <xsl:import
+ href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>
+ <xsl:import
+ href="http://docbook.sourceforge.net/release/xsl/current/xhtml/math.xsl"/>
+
+ <xsl:import href="chunk-common.xsl"/>
+ <xsl:import href="docbook-layout.xsl"/>
+ <xsl:import href="header.xsl"/>
+ <xsl:import href="footer.xsl"/>
+ <xsl:import href="admon.xsl"/>
+ <xsl:import href="xref.xsl"/>
+ <xsl:import href="relative-href.xsl"/>
+ <xsl:import href="callout.xsl"/>
+
+ <xsl:param name="admon.style"/>
+ <xsl:param name="admon.graphics">1</xsl:param>
+ <xsl:param name="html.stylesheet" select="'boostbook.css'"/>
+ <xsl:param name="navig.graphics" select="1"/>
+ <xsl:param name="navig.graphics.extension" select="'.png'"/>
+ <xsl:param name="chapter.autolabel" select="1"/>
+ <xsl:param name="use.id.as.filename" select="1"/>
+ <xsl:param name="refentry.generate.name" select="0"/>
+ <xsl:param name="refentry.generate.title" select="1"/>
+ <xsl:param name="make.year.ranges" select="1"/>
+ <xsl:param name="generate.manifest" select="1"/>
+ <xsl:param name="generate.section.toc.level" select="3"/>
+ <xsl:param name="doc.standalone">false</xsl:param>
+ <xsl:param name="chunker.output.indent">yes</xsl:param>
+ <xsl:param name="toc.max.depth">2</xsl:param>
+ <xsl:param name="callout.graphics.number.limit">15</xsl:param>
+ <xsl:param name = "admon.graphics.path"
+ select = "concat($boost.root, '/doc/html/images/')"/>
+ <xsl:param name = "navig.graphics.path"
+ select = "concat($boost.root, '/doc/html/images/')"/>
+
+
+ <xsl:param name="admon.style">
+ <!-- Remove the style. Let the CSS do the styling -->
+</xsl:param>
+
+<!-- Always have graphics -->
+<xsl:param name="admon.graphics" select="1"/>
+
+ <xsl:param name="generate.toc">
+appendix toc,title
+article/appendix nop
+article toc,title
+book toc,title
+chapter toc,title
+part toc,title
+preface toc,title
+qandadiv toc
+qandaset toc
+reference toc,title
+sect1 toc
+sect2 toc
+sect3 toc
+sect4 toc
+sect5 toc
+section toc
+set toc,title
+ </xsl:param>
+
+
+
+ <!-- We don't want refentry's to show up in the TOC because they
+ will merely be redundant with the synopsis. -->
+ <xsl:template match="refentry" mode="toc"/>
+
+ <!-- override the behaviour of some DocBook elements for better
+ rendering facilities -->
+
+ <xsl:template match = "programlisting[ancestor::informaltable]">
+ <pre class = "table-{name(.)}"><xsl:apply-templates/></pre>
+ </xsl:template>
+
+ <xsl:template match = "refsynopsisdiv">
+ <h2 class = "{name(.)}-title">Synopsis</h2>
+ <div class = "{name(.)}">
+ <xsl:apply-templates/>
+ </div>
+ </xsl:template>
+
+<!-- ============================================================ -->
+
+<xsl:template name="output.html.stylesheets">
+ <xsl:param name="stylesheets" select="''"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($stylesheets, ' ')">
+ <link rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="substring-before($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:if test="$html.stylesheet.type != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$html.stylesheet.type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ <xsl:call-template name="output.html.stylesheets">
+ <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$stylesheets != ''">
+ <link rel="stylesheet">
+ <xsl:attribute name="href">
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$stylesheets"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:if test="$html.stylesheet.type != ''">
+ <xsl:attribute name="type">
+ <xsl:value-of select="$html.stylesheet.type"/>
+ </xsl:attribute>
+ </xsl:if>
+ </link>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
+

Added: sandbox/doc_test/XSL/xref.xsl
==============================================================================
--- (empty file)
+++ sandbox/doc_test/XSL/xref.xsl 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<!--
+ Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+ -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks"
+ exclude-result-prefixes="suwl"
+ version="1.0">
+
+<!-- Import the HTML chunking stylesheet -->
+<!-- needed?
+<xsl:import
+ href="http://docbook.sourceforge.net/release/xsl/current/html/xref.xsl"/>
+-->
+
+<xsl:template name="adjust-url">
+ <xsl:param name="target"/>
+ <xsl:param name="context" select="."/>
+
+ <xsl:choose>
+ <xsl:when test="contains($target, ':')">
+ <xsl:value-of select="$target"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="href.target.relative">
+ <xsl:with-param name="target" select="$target"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+</xsl:template>
+
+
+<xsl:template match="ulink" name="ulink">
+ <xsl:variable name="link">
+ <a>
+ <xsl:if test="@id">
+ <xsl:attribute name="name">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="href">
+ <xsl:call-template name="adjust-url">
+ <xsl:with-param name="target" select="@url"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:if test="$ulink.target != ''">
+ <xsl:attribute name="target">
+ <xsl:value-of select="$ulink.target"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="count(child::node())=0">
+ <xsl:value-of select="@url"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="function-available('suwl:unwrapLinks')">
+ <xsl:copy-of select="suwl:unwrapLinks($link)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+</xsl:stylesheet>

Modified: sandbox/doc_test/doc/Jamfile.v2
==============================================================================
--- sandbox/doc_test/doc/Jamfile.v2 (original)
+++ sandbox/doc_test/doc/Jamfile.v2 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -25,7 +25,26 @@
         <xsl:param>generate.section.toc.level=10
         # Logo location:
         <xsl:param>boost.logo=../boost.png
-
+
+ # The page style
+ <xsl:param>page.style="'website'"
+ # Show chapters select box
+ <xsl:param>grouped.links.chapters.show="'true'"
+ # GroupedLinks xml definition chapters location
+ <xsl:param>grouped.links.chapters.xml="'boost_libs_grouped_links.xml'"
+ # Select the base url for the chapters GroupedLinks
+ <xsl:param>grouped.links.chapters.url="'http://www.boost.org/libs/'"
+ # Show sections select box
+ <xsl:param>grouped.links.sections.show="'true'"
+ # GroupedLinks xml definition sections location
+ <xsl:param>grouped.links.sections.xml="'sections_grouped_links.xml'"
+ # Select the base url for the chapters GroupedLinks
+ <xsl:param>grouped.links.sections.url="'./'"
+ # Show the Google Search Box
+ <xsl:param>search.box.show="'true'"
+ # Location of the cse defintion
+ <xsl:param>search.box.cse.definition.src="'http://www.drivehq.com/web/matias.capeletto/bimap/doc/html/context8.xml'"
+
         # PDF Options:
         # TOC Generation: this is needed for FOP-0.9 and later:
         # <xsl:param>fop1.extensions=1

Modified: sandbox/doc_test/doc/html/boostbook.css
==============================================================================
--- sandbox/doc_test/doc/html/boostbook.css (original)
+++ sandbox/doc_test/doc/html/boostbook.css 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -1,623 +1,802 @@
-/*=============================================================================
- Copyright (c) 2004-2006 Joel de Guzman, http://spirit.sourceforge.net/
- Copyright (c) 2006-2007 Matias Capeletto
-
- Use, modification and distribution is subject to the Boost Software
- License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-=============================================================================*/
-
-
-/*============================================================================
- Page Heading
-=============================================================================*/
-
- .heading
- {
- color : #ffffff;
- height : 100px;
- }
-
-/*=============================================================================
- Search
-=============================================================================*/
-
- .search_box {
- text-align: right;
- background-color: red;
- }
-
- .search_box_content {
- width: 300px;
- float: right;
- margin: 30 0 0 0;
- }
-
-/*=============================================================================
- Body defaults
-=============================================================================*/
-
- body
- {
- background : url(images/header-fg.png) no-repeat top left;
- margin: 1em;
- font-family: sans-serif;
- clear : both;
- border : none;
- }
-
-/*=============================================================================
- Footer
-=============================================================================*/
-
- .footer
- {
- margin: 10px 0px 0px 0px;
- }
-
-/*=============================================================================
- Paragraphs
-=============================================================================*/
-
- p
- {
- text-align: left;
- font-size: 10pt;
- line-height: 1.15;
- }
-
-/*=============================================================================
- Program listings
-=============================================================================*/
-
- /* Code on paragraphs */
- p tt.computeroutput
- {
- font-size: 10pt;
- }
-
- pre.synopsis
- {
- font-size: 10pt;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- .programlisting,
- .screen
- {
- font-size: 10pt;
- display: block;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- /* Program listings in tables don't get borders */
- td .programlisting,
- td .screen
- {
- margin: 0pc 0pc 0pc 0pc;
- padding: 0pc 0pc 0pc 0pc;
- }
-
-/*=============================================================================
- Headings
-=============================================================================*/
-
- h1, h2, h3, h4, h5, h6
- {
- text-align: left;
- margin: 1em 0em 0.5em 0em;
- font-weight: bold;
- }
-
- h1 { font: 140% }
- h2 { font: bold 140% }
- h3 { font: bold 130% }
- h4 { font: bold 120% }
- h5 { font: italic 110% }
- h6 { font: italic 100% }
-
- /* Top page titles */
- title,
- h1.title,
- h2.title
- h3.title,
- h4.title,
- h5.title,
- h6.title,
- .refentrytitle
- {
- font-weight: bold;
- margin-bottom: 1pc;
- }
-
- h1.title { font-size: 140% }
- h2.title { font-size: 140% }
- h3.title { font-size: 130% }
- h4.title { font-size: 120% }
- h5.title { font-size: 110% }
- h6.title { font-size: 100% }
-
- .section h1
- {
- margin: 0em 0em 0.5em 0em;
- font-size: 140%;
- }
-
- .section h2 { font-size: 140% }
- .section h3 { font-size: 130% }
- .section h4 { font-size: 120% }
- .section h5 { font-size: 110% }
- .section h6 { font-size: 100% }
-
- /* Code on titles */
- h1 tt.computeroutput { font-size: 140% }
- h2 tt.computeroutput { font-size: 140% }
- h3 tt.computeroutput { font-size: 130% }
- h4 tt.computeroutput { font-size: 120% }
- h5 tt.computeroutput { font-size: 110% }
- h6 tt.computeroutput { font-size: 100% }
-
-/*=============================================================================
- Author
-=============================================================================*/
-
- h3.author
- {
- font-size: 100%
- }
-
-/*=============================================================================
- Lists
-=============================================================================*/
-
- li
- {
- font-size: 10pt;
- line-height: 1.3;
- }
-
- /* Unordered lists */
- ul
- {
- text-align: left;
- }
-
- /* Ordered lists */
- ol
- {
- text-align: left;
- }
-
-/*=============================================================================
- Links
-=============================================================================*/
-
- a
- {
- text-decoration: none; /* no underline */
- }
-
- a:hover
- {
- text-decoration: underline;
- }
-
-/*=============================================================================
- Spirit style navigation
-=============================================================================*/
-
- .spirit-nav
- {
- text-align: right;
- }
-
- .spirit-nav a
- {
- color: white;
- padding-left: 0.5em;
- }
-
- .spirit-nav img
- {
- border-width: 0px;
- }
-
-/*=============================================================================
- Table of contents
-=============================================================================*/
-
- .toc
- {
- margin: 1pc 4% 0pc 4%;
- padding: 0.1pc 1pc 0.1pc 1pc;
- font-size: 10pt;
- line-height: 1.15;
- }
-
- .toc-main
- {
- text-align: center;
- margin: 3pc 16% 3pc 16%;
- padding: 3pc 1pc 3pc 1pc;
- line-height: 0.1;
- }
-
- .boost-toc
- {
- float: right;
- padding: 0.5pc;
- }
-
-/*=============================================================================
- Tables
-=============================================================================*/
-
- .table-title,
- div.table p.title
- {
- margin-left: 4%;
- padding-right: 0.5em;
- padding-left: 0.5em;
- }
-
- .informaltable table,
- .table table
- {
- width: 92%;
- margin-left: 4%;
- margin-right: 4%;
- }
-
- div.informaltable table,
- div.table table
- {
- padding: 4px;
- }
-
- /* Table Cells */
- div.informaltable table tr td,
- div.table table tr td
- {
- padding: 0.5em;
- text-align: left;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- padding: 0.5em 0.5em 0.5em 0.5em;
- border: 1pt solid white;
- font-size: 120%;
- }
-
-/*=============================================================================
- Blurbs
-=============================================================================*/
-
- div.note,
- div.tip,
- div.important,
- div.caution,
- div.warning,
- div.sidebar
- {
- font-size: 10pt;
- line-height: 1.2;
- display: block;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- div.sidebar img
- {
- padding: 1pt;
- }
-
-
-
-/*=============================================================================
- Callouts
-=============================================================================*/
- .line_callout_bug img
- {
- float: left;
- position:relative;
- left: 4px;
- top: -12px;
- clear: left;
- margin-left:-22px;
- }
-
- .callout_bug img
- {
- }
-
-
-
-/*=============================================================================
- Variable Lists
-=============================================================================*/
-
- /* Make the terms in definition lists bold */
- div.variablelist dl dt,
- span.term
- {
- font-weight: bold;
- font-size: 10pt;
- }
-
- div.variablelist table tbody tr td
- {
- text-align: left;
- vertical-align: top;
- padding: 0em 2em 0em 0em;
- font-size: 10pt;
- margin: 0em 0em 0.5em 0em;
- line-height: 1;
- }
-
- /* Make the terms in definition lists bold */
- div.variablelist dl dt
- {
- margin-bottom: 0.2em;
- }
-
- div.variablelist dl dd
- {
- margin: 0em 0em 0.5em 2em;
- font-size: 10pt;
- }
-
- div.variablelist table tbody tr td p
- div.variablelist dl dd p
- {
- margin: 0em 0em 0.5em 0em;
- line-height: 1;
- }
-
-/*=============================================================================
- Misc
-=============================================================================*/
-
- /* Title of books and articles in bibliographies */
- span.title
- {
- font-style: italic;
- }
-
- span.underline
- {
- text-decoration: underline;
- }
-
- span.strikethrough
- {
- text-decoration: line-through;
- }
-
- /* Copyright, Legal Notice */
- div div.legalnotice p
- {
- text-align: left
- }
-
-/*=============================================================================
- Colors
-=============================================================================*/
-
- @media screen
- {
- /* Links */
- a
- {
- color: #0C7445;
- }
-
- a:visited
- {
- color: #663974;
- }
-
- h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
- h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
- h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
- {
- text-decoration: none; /* no underline */
- color: #000000;
- }
-
- /* Syntax Highlighting */
- .keyword { color: #3300CC; }
- .identifier { color: #000000; }
- .special { color: #707070; }
- .preprocessor { color: #009999; }
- .char { color: teal; }
- .comment { color: #009900; }
- .string { color: teal; }
- .number { color: teal; }
- .white_bkd { background-color: #E8FBE9; }
- .dk_grey_bkd { background-color: #A0DAAC; }
-
- /* Copyright, Legal Notice */
- .copyright
- {
- color: #666666;
- font-size: small;
- }
-
- div div.legalnotice p
- {
- color: #666666;
- }
-
- /* Program listing */
- pre.synopsis
- {
- border: 1px solid #DCDCDC;
- border-bottom: 3px solid #9D9D9D;
- border-right: 3px solid #9D9D9D;
- background-color: #FAFFFB;
- }
-
- .programlisting,
- .screen
- {
- border: 1px solid #DCDCDC;
- border-bottom: 3px solid #9D9D9D;
- border-right: 3px solid #9D9D9D;
- background-color: #FAFFFB;
- }
-
- td .programlisting,
- td .screen
- {
- border: 0px solid #DCDCDC;
- }
-
- /* Blurbs */
- div.note,
- div.tip,
- div.important,
- div.caution,
- div.warning,
- div.sidebar
- {
- border: 1px solid #DCDCDC;
- border-bottom: 3px solid #9D9D9D;
- border-right: 3px solid #9D9D9D;
- background-color: #FAFFFB;
- }
-
- /* Table of contents */
- .toc
- {
- border: 1px solid #DCDCDC;
- border-bottom: 3px solid #9D9D9D;
- border-right: 3px solid #9D9D9D;
- background-color: #FAFFFB;
- }
-
- /* Table of contents */
- .toc-main
- {
- border: 1px solid #DCDCDC;
- border-bottom: 3px solid #9D9D9D;
- border-right: 3px solid #9D9D9D;
- background-color: #FAFFFB;
- }
-
-
- /* Tables */
- div.informaltable table tr td,
- div.table table tr td
- {
- border: 1px solid #DCDCDC;
- background-color: #FAFFFB;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- background-color: #E3F9E4;
- border: 1px solid #DCDCDC;
- }
-
- /* Misc */
- span.highlight
- {
- color: #00A000;
- }
- }
-
- @media print
- {
- /* Links */
- a
- {
- color: black;
- }
-
- a:visited
- {
- color: black;
- }
-
- .spirit-nav
- {
- display: none;
- }
-
- /* Program listing */
- pre.synopsis
- {
- border: 1px solid gray;
- background-color: #FAFFFB;
- }
-
- .programlisting,
- .screen
- {
- border: 1px solid gray;
- background-color: #FAFFFB;
- }
-
- td .programlisting,
- td .screen
- {
- border: 0px solid #DCDCDC;
- }
-
- /* Table of contents */
- .toc
- {
- border: 1px solid #DCDCDC;
- border-bottom: 3px solid #9D9D9D;
- border-right: 3px solid #9D9D9D;
- background-color: #FAFFFB;
- }
-
- /* Table of contents */
- .toc-main
- {
- border: 1px solid #DCDCDC;
- border-bottom: 3px solid #9D9D9D;
- border-right: 3px solid #9D9D9D;
- background-color: #FAFFFB;
- }
-
- .informaltable table,
- .table table
- {
- border: 1px solid #DCDCDC;
- border-bottom: 3px solid #9D9D9D;
- border-right: 3px solid #9D9D9D;
- border-collapse: collapse;
- background-color: #FAFFFB;
- }
-
- /* Tables */
- div.informaltable table tr td,
- div.table table tr td
- {
- border: 1px solid #DCDCDC;
- background-color: #FAFFFB;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- border: 1px solid #DCDCDC;
- background-color: #FAFFFB;
- }
-
- /* Misc */
- span.highlight
- {
- font-weight: bold;
- }
- }
-
-
-
+/*=============================================================================
+ Copyright (c) 2004-2006 Joel de Guzman, http://spirit.sourceforge.net/
+ Copyright (c) 2006-2007 Matias Capeletto
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+
+/*============================================================================
+ misc
+=============================================================================*/
+
+ .clear
+ {
+ clear : both;
+ width : 100%;
+ height : 1px;
+ overflow : hidden;
+ }
+
+/*=============================================================================
+ Body defaults
+=============================================================================*/
+
+ body
+ {
+ /*--- background : url(images/header-fg.png) no-repeat top left;*/
+ /*--- margin: 1em;*/
+ font-family: sans-serif;
+ /*--- clear : both;*/
+ /*--- border : none;*/
+ min-width : 43em;
+ /*+++ font-size : smaller;*/
+ margin: 0;
+ }
+
+ #body {
+ clear : both;
+ border : none;
+ width : 100%;
+ background : #ffffff;
+ }
+
+ #content {
+ margin: 1em;
+ clear : both;
+ border : none;
+ }
+
+/*============================================================================
+ Page Heading
+=============================================================================*/
+
+ #heading
+ {
+ color : black;
+ height : 100px;
+ background : url(images/header-fg.png) no-repeat top left;
+ border-bottom : solid 1px;
+ }
+
+ .heading_logo
+ {
+ text-align: left;
+ border: none;
+ }
+
+ .heading_search_box
+ {
+ text-align: right;
+ padding-bottom: 10px;
+ padding-right: 10px;
+ height: 40px;
+ color: white;
+ font-weight: bold;
+ }
+
+ input.search_box
+ {
+ background-color: #BEDEBA;
+ font-weight: bold;
+ font-size: 12px;
+ color: #006D00;
+ border: 1px solid #DCDCDC;
+ border-bottom: 1px solid #9D9D9D;
+ border-right: 1px solid #9D9D9D;
+ padding-bottom: 3px;
+ padding-left: 3px;
+ }
+
+ .heading_navigation_box
+ {
+ text-align: right;
+ padding-top: 10px;
+ padding-right: 10px;
+ height: 40px;
+ }
+
+ div.grouped_links
+ {
+ display: inline;
+ }
+
+/*=============================================================================
+ Grouped Links
+=============================================================================*/
+
+ select.grouped_links
+ {
+ background-color: #BEDEBA;
+ font-weight: bold;
+ font-size: 12px;
+ color: #006D00;
+ border: 1px solid #DCDCDC;
+ border-bottom: 1px solid #9D9D9D;
+ border-right: 1px solid #9D9D9D;
+ padding-bottom: 1px;
+ padding-right: 1px;
+ }
+
+ option.grouped_links_title
+ {
+ background-color: #BEDEBA;
+ font-weight: bold;
+ font-size: 12px;
+ color: #006D00;
+ }
+
+ option.grouped_links_group
+ {
+ background-color: #008000;
+ font-weight: bold;
+ font-size: 12px;
+ color: white;
+ }
+
+ option.grouped_links_item
+ {
+ background-color: #FAFFFB;
+ padding: 0px 0px 0px 12px;
+ color: #006D00;
+ font-weight: normal;
+ }
+
+
+/*=============================================================================
+ Footer
+=============================================================================*/
+
+ #footer {
+ color: #666666;
+ margin: 1.5em;
+ padding: 0em;
+ clear: both;
+ background: #FFFFFF url(images/footer-bg.png) repeat-x top left;
+ border: none;
+ }
+
+ #footer-left {
+ float: left;
+ padding: 0.65em;
+ min-height: 100px;
+ background: url(images/footer-bg-left.png) no-repeat top left;
+ }
+
+ #footer-right {
+ float: right;
+ padding: 0.65em;
+ min-height: 100px;
+ background: url(images/footer-bg-right.png) no-repeat top right;
+ }
+
+ #footer p {
+ margin: 0em;
+ padding: 0em;
+ font-size: 75%;
+ text-align: left;
+ }
+
+ #footer #banners p {
+ float: left;
+ margin: 0em 0em 0em 1em;
+ }
+
+ #footer #banners a {
+ display: block;
+ }
+
+ #footer #banner-sourceforge {
+ background: url(http://sourceforge.net/sflogo.php?group_id=7586&type=1) no-repeat fixed 0px 5em;
+ }
+
+
+/*=============================================================================
+ Paragraphs
+=============================================================================*/
+
+ p
+ {
+ text-align: left;
+ font-size: 10pt;
+ line-height: 1.15;
+ }
+
+/*=============================================================================
+ Program listings
+=============================================================================*/
+
+ /* Code on paragraphs */
+ p tt.computeroutput
+ {
+ font-size: 10pt;
+ }
+
+ pre.synopsis
+ {
+ font-size: 10pt;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ .programlisting,
+ .screen
+ {
+ font-size: 10pt;
+ display: block;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ /* Program listings in tables don't get borders */
+ td .programlisting,
+ td .screen
+ {
+ margin: 0pc 0pc 0pc 0pc;
+ padding: 0pc 0pc 0pc 0pc;
+ }
+
+/*=============================================================================
+ Headings
+=============================================================================*/
+
+ h1, h2, h3, h4, h5, h6
+ {
+ text-align: left;
+ margin: 1em 0em 0.5em 0em;
+ font-weight: bold;
+ }
+
+ h1 { font: 140% }
+ h2 { font: bold 140% }
+ h3 { font: bold 130% }
+ h4 { font: bold 120% }
+ h5 { font: italic 110% }
+ h6 { font: italic 100% }
+
+ /* Top page titles */
+ title,
+ h1.title,
+ h2.title
+ h3.title,
+ h4.title,
+ h5.title,
+ h6.title,
+ .refentrytitle
+ {
+ font-weight: bold;
+ margin-bottom: 1pc;
+ }
+
+ h1.title { font-size: 140% }
+ h2.title { font-size: 140% }
+ h3.title { font-size: 130% }
+ h4.title { font-size: 120% }
+ h5.title { font-size: 110% }
+ h6.title { font-size: 100% }
+
+ .section h1
+ {
+ margin: 0em 0em 0.5em 0em;
+ font-size: 140%;
+ }
+
+ .section h2 { font-size: 140% }
+ .section h3 { font-size: 130% }
+ .section h4 { font-size: 120% }
+ .section h5 { font-size: 110% }
+ .section h6 { font-size: 100% }
+
+ /* Code on titles */
+ h1 tt.computeroutput { font-size: 140% }
+ h2 tt.computeroutput { font-size: 140% }
+ h3 tt.computeroutput { font-size: 130% }
+ h4 tt.computeroutput { font-size: 120% }
+ h5 tt.computeroutput { font-size: 110% }
+ h6 tt.computeroutput { font-size: 100% }
+
+/*=============================================================================
+ Author
+=============================================================================*/
+
+ h3.author
+ {
+ font-size: 100%
+ }
+
+/*=============================================================================
+ Lists
+=============================================================================*/
+
+ li
+ {
+ font-size: 10pt;
+ line-height: 1.3;
+ }
+
+ /* Unordered lists */
+ ul
+ {
+ text-align: left;
+ }
+
+ /* Ordered lists */
+ ol
+ {
+ text-align: left;
+ }
+
+/*=============================================================================
+ Links
+=============================================================================*/
+
+ a
+ {
+ text-decoration: none; /* no underline */
+ border: none;
+ }
+
+ a:hover
+ {
+ text-decoration: underline;
+ border: none;
+ }
+
+/*=============================================================================
+ Spirit style navigation
+=============================================================================*/
+
+ .spirit-nav
+ {
+ text-align: right;
+ margin: 16px;
+ }
+
+ .spirit-nav a
+ {
+ color: white;
+ padding-left: 0.5em;
+ }
+
+ .spirit-nav img
+ {
+ border-width: 0px;
+ }
+
+/*=============================================================================
+ Table of contents
+=============================================================================*/
+
+ .toc
+ {
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.1pc 1pc 0.1pc 1pc;
+ font-size: 10pt;
+ line-height: 1.15;
+ }
+
+ .toc-main
+ {
+ text-align: center;
+ margin: 3pc 16% 3pc 16%;
+ padding: 3pc 1pc 3pc 1pc;
+ line-height: 0.1;
+ }
+
+ .boost-toc
+ {
+ float: right;
+ padding: 0.5pc;
+ }
+
+/*=============================================================================
+ Tables
+=============================================================================*/
+
+ .table-title,
+ div.table p.title
+ {
+ margin-left: 4%;
+ padding-right: 0.5em;
+ padding-left: 0.5em;
+ }
+
+ .informaltable table,
+ .table table
+ {
+ width: 92%;
+ margin-left: 4%;
+ margin-right: 4%;
+ }
+
+ div.informaltable table,
+ div.table table
+ {
+ padding: 4px;
+ }
+
+ /* Table Cells */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ padding: 0.5em;
+ text-align: left;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ padding: 0.5em 0.5em 0.5em 0.5em;
+ border: 1pt solid white;
+ font-size: 120%;
+ }
+
+/*=============================================================================
+ Blurbs
+=============================================================================*/
+
+ .admonition-graphic {
+ float: left;
+ padding-top: 10px;
+ }
+
+ .admonition-body {
+ padding: 10px;
+ margin-left: 50px;
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ .admonition-title {
+ font-weight: bold;
+ }
+
+ .admonition-content {
+
+ }
+
+
+ div.note,
+ div.tip,
+ div.important,
+ div.caution,
+ div.warning,
+ div.sidebar
+ {
+ font-size: 10pt;
+ line-height: 1.2;
+ display: block;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ div.sidebar img
+ {
+ padding: 1pt;
+ }
+
+
+
+/*=============================================================================
+ Callouts
+=============================================================================*/
+ .line_callout_bug img
+ {
+ float: left;
+ position:relative;
+ left: 4px;
+ top: -12px;
+ clear: left;
+ margin-left:-22px;
+ }
+
+ .callout_bug img
+ {
+ }
+
+
+
+/*=============================================================================
+ Variable Lists
+=============================================================================*/
+
+ /* Make the terms in definition lists bold */
+ div.variablelist dl dt,
+ span.term
+ {
+ font-weight: bold;
+ font-size: 10pt;
+ }
+
+ div.variablelist table tbody tr td
+ {
+ text-align: left;
+ vertical-align: top;
+ padding: 0em 2em 0em 0em;
+ font-size: 10pt;
+ margin: 0em 0em 0.5em 0em;
+ line-height: 1;
+ }
+
+ /* Make the terms in definition lists bold */
+ div.variablelist dl dt
+ {
+ margin-bottom: 0.2em;
+ }
+
+ div.variablelist dl dd
+ {
+ margin: 0em 0em 0.5em 2em;
+ font-size: 10pt;
+ }
+
+ div.variablelist table tbody tr td p
+ div.variablelist dl dd p
+ {
+ margin: 0em 0em 0.5em 0em;
+ line-height: 1;
+ }
+
+/*=============================================================================
+ Misc
+=============================================================================*/
+
+ /* Title of books and articles in bibliographies */
+ span.title
+ {
+ font-style: italic;
+ }
+
+ span.underline
+ {
+ text-decoration: underline;
+ }
+
+ span.strikethrough
+ {
+ text-decoration: line-through;
+ }
+
+ /* Copyright, Legal Notice */
+ div div.legalnotice p
+ {
+ text-align: left
+ }
+
+/*=============================================================================
+ Colors
+=============================================================================*/
+
+ @media screen
+ {
+ /* Links */
+ a
+ {
+ color: #0C7445;
+ border: none;
+ }
+
+ a:visited
+ {
+ color: #663974;
+ border: none;
+ }
+
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
+ h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
+ h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
+ {
+ text-decoration: none; /* no underline */
+ color: #000000;
+ border: none;
+ }
+
+ /* Syntax Highlighting */
+
+ /* John Maddock style */
+ .keyword { color: #3300CC; }
+ .identifier { color: #000000; }
+ .special { color: #707070; }
+ .preprocessor { color: #009999; }
+ .char { color: teal; }
+ .comment { color: #009900; }
+ .string { color: teal; }
+ .number { color: teal; }
+ .white_bkd { background-color: #E8FBE9; }
+ .dk_grey_bkd { background-color: #A0DAAC; }
+
+ /* Matias Capeletto style
+ .keyword { color: #0000AA; }
+ .identifier { color: #000000; }
+ .special { color: #707070; }
+ .preprocessor { color: #402080; }
+ .char { color: teal; }
+ .comment { color: #800000; }
+ .string { color: teal; }
+ .number { color: teal; }
+ .white_bkd { background-color: #E8FBE9; }
+ .dk_grey_bkd { background-color: #A0DAAC; }
+ */
+
+ /* Copyright, Legal Notice */
+ .copyright
+ {
+ color: #666666;
+ font-size: small;
+ }
+
+ div div.legalnotice p
+ {
+ color: #666666;
+ }
+
+ /* Program listing */
+ pre.synopsis
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ .programlisting,
+ .screen
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ td .programlisting,
+ td .screen
+ {
+ border: 0px solid #DCDCDC;
+ }
+
+ /* Blurbs */
+ /*
+ div.note,
+ div.tip,
+ div.important,
+ div.caution,
+ div.warning,*/
+ div.sidebar
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc-main
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+
+ /* Tables */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ border: 1px solid #DCDCDC;
+ background-color: #FAFFFB;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ background-color: #E3F9E4;
+ border: 1px solid #DCDCDC;
+ }
+
+ /* Misc */
+ span.highlight
+ {
+ color: #00A000;
+ }
+ }
+
+ @media print
+ {
+ /* Links */
+ a
+ {
+ color: black;
+ }
+
+ a:visited
+ {
+ color: black;
+ }
+
+ .spirit-nav
+ {
+ display: none;
+ }
+
+ /* Program listing */
+ pre.synopsis
+ {
+ border: 1px solid gray;
+ background-color: #FAFFFB;
+ }
+
+ .programlisting,
+ .screen
+ {
+ border: 1px solid gray;
+ background-color: #FAFFFB;
+ }
+
+ td .programlisting,
+ td .screen
+ {
+ border: 0px solid #DCDCDC;
+ }
+
+ /* Table of contents */
+ .toc
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc-main
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ .informaltable table,
+ .table table
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ border-collapse: collapse;
+ background-color: #FAFFFB;
+ }
+
+ /* Tables */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ border: 1px solid #DCDCDC;
+ background-color: #FAFFFB;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ border: 1px solid #DCDCDC;
+ background-color: #FAFFFB;
+ }
+
+ /* Misc */
+ span.highlight
+ {
+ font-weight: bold;
+ }
+ }

Modified: sandbox/doc_test/doc/html/images/caution.png
==============================================================================
Binary files. No diff available.

Modified: sandbox/doc_test/doc/html/images/important.png
==============================================================================
Binary files. No diff available.

Modified: sandbox/doc_test/doc/html/images/space.png
==============================================================================
Binary files. No diff available.

Modified: sandbox/doc_test/doc/test.qbk
==============================================================================
--- sandbox/doc_test/doc/test.qbk (original)
+++ sandbox/doc_test/doc/test.qbk 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -147,44 +147,44 @@
    class sub_match : public std::pair<BidirectionalIterator, BidirectionalIterator>
    {
    public:
- typedef typename iterator_traits<BidirectionalIterator>::value_type ``[link boost_regex.sub_match.value_type value_type]``;
- typedef typename iterator_traits<BidirectionalIterator>::difference_type ``[link boost_regex.sub_match.diff_type difference_type]``;
- typedef BidirectionalIterator ``[link boost_regex.sub_match.it_type iterator]``;
-
- bool ``[link boost_regex.sub_match.matched matched]``;
-
- difference_type ``[link boost_regex.sub_match.length length]``()const;
- ``[link boost_regex.sub_match.cast operator basic_string<value_type>]``()const;
- basic_string<value_type> ``[link boost_regex.sub_match.str str]``()const;
-
- int ``[link boost_regex.sub_match.compare1 compare]``(const sub_match& s)const;
- int ``[link boost_regex.sub_match.compare2 compare]``(const basic_string<value_type>& s)const;
- int ``[link boost_regex.sub_match.compare3 compare]``(const value_type* s)const;
+ typedef typename iterator_traits<BidirectionalIterator>::value_type value_type;
+ typedef typename iterator_traits<BidirectionalIterator>::difference_type difference_type;
+ typedef BidirectionalIterator iterator;
+
+ bool matched;
+
+ difference_type length()const;
+ operator basic_string<value_type>()const;
+ basic_string<value_type> str()const;
+
+ int compare(const sub_match& s)const;
+ int compare(const basic_string<value_type>& s)const;
+ int compare(const value_type* s)const;
    #ifdef BOOST_REGEX_MATCH_EXTRA
- typedef implementation-private ``[link boost_regex.sub_match.cap_seq_type capture_sequence_type]``;
- const capture_sequence_type& ``[link boost_regex.sub_match.captures captures]``()const;
+ typedef implementation-private capture_sequence_type;
+ const capture_sequence_type& captures()const;
    #endif
    };
    //
    // comparisons to another sub_match:
    //
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare1 operator ==]`` (const sub_match<BidirectionalIterator>& lhs,
+ bool operator == (const sub_match<BidirectionalIterator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare2 operator !=]`` (const sub_match<BidirectionalIterator>& lhs,
+ bool operator != (const sub_match<BidirectionalIterator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare3 operator <]`` (const sub_match<BidirectionalIterator>& lhs,
+ bool operator < (const sub_match<BidirectionalIterator>& lhs,
                   const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare4 operator <=]`` (const sub_match<BidirectionalIterator>& lhs,
+ bool operator <= (const sub_match<BidirectionalIterator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare5 operator >=]`` (const sub_match<BidirectionalIterator>& lhs,
+ bool operator >= (const sub_match<BidirectionalIterator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare6 operator >]`` (const sub_match<BidirectionalIterator>& lhs,
+ bool operator > (const sub_match<BidirectionalIterator>& lhs,
                   const sub_match<BidirectionalIterator>& rhs);
 
 
@@ -192,63 +192,63 @@
    // comparisons to a basic_string:
    //
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare7 operator ==]`` (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+ bool operator == (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                              traits,
                                              Allocator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare8 operator != ]``(const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+ bool operator != (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                              traits,
                                              Allocator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare9 operator <]`` (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+ bool operator < (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                              traits,
                                              Allocator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare10 operator >]`` (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+ bool operator > (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                              traits,
                                              Allocator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare11 operator >= ]``(const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+ bool operator >= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                              traits,
                                              Allocator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare12 operator <= ]``(const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
+ bool operator <= (const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                              traits,
                                              Allocator>& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
 
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare13 operator == ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator == (const sub_match<BidirectionalIterator>& lhs,
                      const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                              traits,
                                              Allocator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare14 operator != ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator != (const sub_match<BidirectionalIterator>& lhs,
                      const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                              traits,
                                              Allocator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare15 operator < ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator < (const sub_match<BidirectionalIterator>& lhs,
                   const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                           traits,
                                           Allocator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare16 operator > ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator > (const sub_match<BidirectionalIterator>& lhs,
                   const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                           traits,
                                           Allocator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare17 operator >= ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator >= (const sub_match<BidirectionalIterator>& lhs,
                      const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                           traits,
                                           Allocator>& rhs);
    template <class BidirectionalIterator, class traits, class Allocator>
- bool ``[link boost_regex.sub_match.op_compare18 operator <= ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator <= (const sub_match<BidirectionalIterator>& lhs,
                      const std::basic_string<iterator_traits<BidirectionalIterator>::value_type,
                                              traits,
                                              Allocator>& rhs);
@@ -257,117 +257,117 @@
    // comparisons to a pointer to a character array:
    //
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare19 operator == ]``(typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+ bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare20 operator != ]``(typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+ bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare21 operator < ]``(typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+ bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
                   const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare22 operator > ]``(typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+ bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
                   const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare23 operator >= ]``(typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+ bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare24 operator <= ]``(typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
+ bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const* lhs,
                      const sub_match<BidirectionalIterator>& rhs);
 
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare25 operator == ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator == (const sub_match<BidirectionalIterator>& lhs,
                      typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare26 operator != ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator != (const sub_match<BidirectionalIterator>& lhs,
                      typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare27 operator < ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator < ]``(const sub_match<BidirectionalIterator>& lhs,
                   typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare28 operator > ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator > (const sub_match<BidirectionalIterator>& lhs,
                   typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare29 operator >= ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator >= (const sub_match<BidirectionalIterator>& lhs,
                      typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare30 operator <= ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator <= (const sub_match<BidirectionalIterator>& lhs,
                      typename iterator_traits<BidirectionalIterator>::value_type const* rhs);
 
    //
    // comparisons to a single character:
    //
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare31 operator == ]``(typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+ bool operator == (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare32 operator != ]``(typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+ bool operator != (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare33 operator < ]``(typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+ bool operator < (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
                   const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare34 operator > ]``(typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+ bool operator > (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
                   const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare35 operator >= ]``(typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+ bool operator >= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare36 operator <= ]``(typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
+ bool operator <= (typename iterator_traits<BidirectionalIterator>::value_type const& lhs,
                      const sub_match<BidirectionalIterator>& rhs);
 
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare37 operator == ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator == (const sub_match<BidirectionalIterator>& lhs,
                      typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare38 operator != ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator != (const sub_match<BidirectionalIterator>& lhs,
                      typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare39 operator < ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator < (const sub_match<BidirectionalIterator>& lhs,
                   typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare40 operator > ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator > (const sub_match<BidirectionalIterator>& lhs,
                   typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare41 operator >= ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator >= (const sub_match<BidirectionalIterator>& lhs,
                      typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
    template <class BidirectionalIterator>
- bool ``[link boost_regex.sub_match.op_compare42 operator <= ]``(const sub_match<BidirectionalIterator>& lhs,
+ bool operator <= (const sub_match<BidirectionalIterator>& lhs,
                      typename iterator_traits<BidirectionalIterator>::value_type const& rhs);
    //
    // addition operators:
    //
    template <class BidirectionalIterator, class traits, class Allocator>
    std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator>
- ``[link boost_regex.sub_match.op_add1 operator + ]``(const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
+ operator + (const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
                                           traits,
                                           Allocator>& s,
                   const sub_match<BidirectionalIterator>& m);
    template <class BidirectionalIterator, class traits, class Allocator>
    std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type, traits, Allocator>
- ``[link boost_regex.sub_match.op_add2 operator + ]``(const sub_match<BidirectionalIterator>& m,
+ operator + (const sub_match<BidirectionalIterator>& m,
                   const std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type,
                                           traits,
                                           Allocator>& s);
    template <class BidirectionalIterator>
    std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
- ``[link boost_regex.sub_match.op_add3 operator + ]``(typename iterator_traits<BidirectionalIterator>::value_type const* s,
+ operator + (typename iterator_traits<BidirectionalIterator>::value_type const* s,
                   const sub_match<BidirectionalIterator>& m);
    template <class BidirectionalIterator>
    std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
- ``[link boost_regex.sub_match.op_add4 operator + ]``(const sub_match<BidirectionalIterator>& m,
+ operator + (const sub_match<BidirectionalIterator>& m,
                   typename iterator_traits<BidirectionalIterator>::value_type const * s);
    template <class BidirectionalIterator>
    std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
- ``[link boost_regex.sub_match.op_add5 operator + ]``(typename iterator_traits<BidirectionalIterator>::value_type const& s,
+ operator + (typename iterator_traits<BidirectionalIterator>::value_type const& s,
                   const sub_match<BidirectionalIterator>& m);
    template <class BidirectionalIterator>
    std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
- ``[link boost_regex.sub_match.op_add6 operator + ]``(const sub_match<BidirectionalIterator>& m,
+ operator + (const sub_match<BidirectionalIterator>& m,
                   typename iterator_traits<BidirectionalIterator>::value_type const& s);
    template <class BidirectionalIterator>
    std::basic_string<typename iterator_traits<BidirectionalIterator>::value_type>
- ``[link boost_regex.sub_match.op_add7 operator + ]``(const sub_match<BidirectionalIterator>& m1,
+ operator + (const sub_match<BidirectionalIterator>& m1,
                   const sub_match<BidirectionalIterator>& m2);
 
    //
@@ -375,7 +375,7 @@
    //
    template <class charT, class traits, class BidirectionalIterator>
    basic_ostream<charT, traits>&
- ``[link boost_regex.sub_match.op_stream operator << ]``(basic_ostream<charT, traits>& os,
+ operator << (basic_ostream<charT, traits>& os,
                   const sub_match<BidirectionalIterator>& m);
 
    } // namespace boost

Added: sandbox/doc_test/doc/xhtml/HTML.manifest
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/HTML.manifest 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,5 @@
+index.html
+document_to_test_formatting/introduction.html
+document_to_test_formatting/basic_formatting_tests.html
+document_to_test_formatting/images.html
+document_to_test_formatting/test.html

Added: sandbox/doc_test/doc/xhtml/boost_libs_grouped_links.xml
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/boost_libs_grouped_links.xml 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--=========================================================================
+
+ Grouped links for Boost Libraries documentation
+
+ Copyright (c) 2007 Matias Capeletto
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+===========================================================================-->
+
+
+<groupedLinks version="1.0">
+
+<title tag="Boost Libraries" url="index.html" />
+
+<group tag="Text processing" url="index.html" >
+<!--=======================================================================-->
+ <item tag="lexical_cast" url="conversion/lexical_cast.htm" />
+ <item tag="format" url="format/index.html" />
+ <item tag="iostreams" url="iostreams/doc/index.html" />
+ <item tag="regex" url="regex/index.html" />
+ <item tag="spirit" url="spirit/index.html" />
+ <item tag="string_algo" url="algorithm/string/index.html" />
+ <item tag="tokenizer" url="tokenizer/index.html" />
+ <item tag="wave" url="wave/index.html" />
+ <item tag="xpressive" url="xpressive/index.html" />
+
+</group>
+
+
+<group tag="Data structures" url="index.html" >
+<!--=======================================================================-->
+ <item tag="any" url="any/index.html" />
+ <item tag="array" url="array/index.html" />
+ <item tag="bimap" url="http://tinyurl.com/22sja5" />
+ <item tag="compressed_pair" url="utility/compressed_pair.htm" />
+ <item tag="dynamic_bitset" url="dynamic_bitset/dynamic_bitset.html" />
+ <item tag="graph" url="graph/doc/table_of_contents.html" />
+ <item tag="multi_array" url="multi_array/doc/index.html" />
+ <item tag="multi_index" url="multi_index/doc/index.html" />
+ <item tag="optional" url="libs/optional/doc/optional.html" />
+ <item tag="ptr_container" url="ptr_container/index.html" />
+ <item tag="property_map" url="property_map/property_map.html" />
+ <item tag="tribool" url="doc/html/tribool.html" />
+ <item tag="tuple" url="tuple/doc/tuple_users_guide.html" />
+ <item tag="variant" url="variant/index.html" />
+
+</group>
+
+
+<group tag="Algorithms" url="index.html" >
+<!--=======================================================================-->
+ <item tag="foreach" url="foreach/index.html" />
+ <item tag="minmax" url="algorithm/minmax/index.html" />
+ <item tag="range" url="range/index.html" />
+
+</group>
+
+
+<group tag="Functional" url="index.html" >
+<!--=======================================================================-->
+ <item tag="bind" url="bind/bind.html" />
+ <item tag="function" url="function/index.html" />
+ <item tag="functional" url="functional/index.htm" />
+ <item tag="hash" url="functional/hash/index.html" />
+ <item tag="lambda" url="lambda/index.html" />
+ <item tag="bind" url="bind/ref.html" />
+ <item tag="signals" url="signals/index.html" />
+ <item tag="result_of" url="utility/utility.htm#result_of" />
+
+</group>
+
+
+<group tag="Generic Programming" url="index.html" >
+<!--=======================================================================-->
+ <item tag="call_traits" url="utility/call_traits.htm" />
+ <item tag="concept_check" url="concept_check/concept_check.htm" />
+ <item tag="enable_if" url="utility/enable_if.html" />
+ <item tag="in_place_factory" url="utility/in_place_factories.html" />
+ <item tag="iterators" url="iterator/doc/index.html" />
+ <item tag="operators" url="utility/operators.htm" />
+ <item tag="typeof" url="typeof/index.html" />
+
+</group>
+
+
+<group tag="Metaprogramming" url="index.html" >
+<!--=======================================================================-->
+ <item tag="mpl" url="mpl/doc/index.html" />
+ <item tag="static_assert" url="static_assert/static_assert.htm" />
+ <item tag="type_traits" url="type_traits/index.html" />
+
+</group>
+
+
+<group tag="Concurrent" url="index.html" >
+<!--=======================================================================-->
+ <item tag="thread" url="thread/doc/index.html" />
+
+</group>
+
+
+<group tag="Math and numerics" url="index.html" >
+<!--=======================================================================-->
+ <item tag="math" url="math/doc/index.html" />
+ <item tag="conversion" url="numeric/conversion/index.html" />
+ <item tag="integer" url="integer/index.html" />
+ <item tag="interval" url="numeric/interval/doc/interval.htm" />
+ <item tag="random" url="random/index.html" />
+ <item tag="rational" url="rational/index.html" />
+ <item tag="ublas" url="numeric/ublas/doc/index.htm" />
+
+</group>
+
+
+<group tag="Input Output" url="index.html" >
+<!--=======================================================================-->
+ <item tag="io state savers" url="io/doc/ios_state.html" />
+ <item tag="program_options" url="../doc/html/program_options.html" />
+ <item tag="serialization" url="serialization/doc/index.html" />
+
+</group>
+
+
+<group tag="Memory" url="index.html" >
+<!--=======================================================================-->
+ <item tag="pool" url="pool/doc/index.html" />
+ <item tag="smart_ptr" url="smart_ptr/index.html" />
+ <item tag="utility" url="utility/utility.htm" />
+
+</group>
+
+
+<group tag="Miscellaneous" url="index.html" >
+<!--=======================================================================-->
+ <item tag="assign" url="assign/index.html" />
+ <item tag="base from member" url="utility/base_from_member.html" />
+ <item tag="crc" url="crc/index.html" />
+ <item tag="date_time" url="date_time/doc/index.html" />
+ <item tag="filesystem" url="filesystem/doc/index.htm" />
+ <item tag="parameter" url="parameter/doc/html/index.html" />
+ <item tag="preprocesor" url="preprocessor/doc/index.html" />
+ <item tag="python" url="python/doc/index.html" />
+ <item tag="timer" url="timer/index.html" />
+ <item tag="tr1" url="tr1/index.html" />
+ <item tag="statechart" url="statechart/doc/index.html" />
+ <item tag="value_initialized" url="utility/value_init.htm" />
+
+</group>
+
+
+<group tag="Compiler workarounds" url="index.html" >
+<!--=======================================================================-->
+ <item tag="compatibility" url="compatibility/index.html" />
+ <item tag="config" url="config/config.htm" />
+
+</group>
+
+
+
+</groupedLinks>
+

Added: sandbox/doc_test/doc/xhtml/boostbook.css
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/boostbook.css 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,802 @@
+/*=============================================================================
+ Copyright (c) 2004-2006 Joel de Guzman, http://spirit.sourceforge.net/
+ Copyright (c) 2006-2007 Matias Capeletto
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+
+/*============================================================================
+ misc
+=============================================================================*/
+
+ .clear
+ {
+ clear : both;
+ width : 100%;
+ height : 1px;
+ overflow : hidden;
+ }
+
+/*=============================================================================
+ Body defaults
+=============================================================================*/
+
+ body
+ {
+ /*--- background : url(images/header-fg.png) no-repeat top left;*/
+ /*--- margin: 1em;*/
+ font-family: sans-serif;
+ /*--- clear : both;*/
+ /*--- border : none;*/
+ min-width : 43em;
+ /*+++ font-size : smaller;*/
+ margin: 0;
+ }
+
+ #body {
+ clear : both;
+ border : none;
+ width : 100%;
+ background : #ffffff;
+ }
+
+ #content {
+ margin: 1em;
+ clear : both;
+ border : none;
+ }
+
+/*============================================================================
+ Page Heading
+=============================================================================*/
+
+ #heading
+ {
+ color : black;
+ height : 100px;
+ background : url(images/header-fg.png) no-repeat top left;
+ border-bottom : solid 1px;
+ }
+
+ .heading_logo
+ {
+ text-align: left;
+ border: none;
+ }
+
+ .heading_search_box
+ {
+ text-align: right;
+ padding-bottom: 10px;
+ padding-right: 10px;
+ height: 40px;
+ color: white;
+ font-weight: bold;
+ }
+
+ input.search_box
+ {
+ background-color: #BEDEBA;
+ font-weight: bold;
+ font-size: 12px;
+ color: #006D00;
+ border: 1px solid #DCDCDC;
+ border-bottom: 1px solid #9D9D9D;
+ border-right: 1px solid #9D9D9D;
+ padding-bottom: 3px;
+ padding-left: 3px;
+ }
+
+ .heading_navigation_box
+ {
+ text-align: right;
+ padding-top: 10px;
+ padding-right: 10px;
+ height: 40px;
+ }
+
+ div.grouped_links
+ {
+ display: inline;
+ }
+
+/*=============================================================================
+ Grouped Links
+=============================================================================*/
+
+ select.grouped_links
+ {
+ background-color: #BEDEBA;
+ font-weight: bold;
+ font-size: 12px;
+ color: #006D00;
+ border: 1px solid #DCDCDC;
+ border-bottom: 1px solid #9D9D9D;
+ border-right: 1px solid #9D9D9D;
+ padding-bottom: 1px;
+ padding-right: 1px;
+ }
+
+ option.grouped_links_title
+ {
+ background-color: #BEDEBA;
+ font-weight: bold;
+ font-size: 12px;
+ color: #006D00;
+ }
+
+ option.grouped_links_group
+ {
+ background-color: #008000;
+ font-weight: bold;
+ font-size: 12px;
+ color: white;
+ }
+
+ option.grouped_links_item
+ {
+ background-color: #FAFFFB;
+ padding: 0px 0px 0px 12px;
+ color: #006D00;
+ font-weight: normal;
+ }
+
+
+/*=============================================================================
+ Footer
+=============================================================================*/
+
+ #footer {
+ color: #666666;
+ margin: 1.5em;
+ padding: 0em;
+ clear: both;
+ background: #FFFFFF url(images/footer-bg.png) repeat-x top left;
+ border: none;
+ }
+
+ #footer-left {
+ float: left;
+ padding: 0.65em;
+ min-height: 100px;
+ background: url(images/footer-bg-left.png) no-repeat top left;
+ }
+
+ #footer-right {
+ float: right;
+ padding: 0.65em;
+ min-height: 100px;
+ background: url(images/footer-bg-right.png) no-repeat top right;
+ }
+
+ #footer p {
+ margin: 0em;
+ padding: 0em;
+ font-size: 75%;
+ text-align: left;
+ }
+
+ #footer #banners p {
+ float: left;
+ margin: 0em 0em 0em 1em;
+ }
+
+ #footer #banners a {
+ display: block;
+ }
+
+ #footer #banner-sourceforge {
+ background: url(http://sourceforge.net/sflogo.php?group_id=7586&type=1) no-repeat fixed 0px 5em;
+ }
+
+
+/*=============================================================================
+ Paragraphs
+=============================================================================*/
+
+ p
+ {
+ text-align: left;
+ font-size: 10pt;
+ line-height: 1.15;
+ }
+
+/*=============================================================================
+ Program listings
+=============================================================================*/
+
+ /* Code on paragraphs */
+ p tt.computeroutput
+ {
+ font-size: 10pt;
+ }
+
+ pre.synopsis
+ {
+ font-size: 10pt;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ .programlisting,
+ .screen
+ {
+ font-size: 10pt;
+ display: block;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ /* Program listings in tables don't get borders */
+ td .programlisting,
+ td .screen
+ {
+ margin: 0pc 0pc 0pc 0pc;
+ padding: 0pc 0pc 0pc 0pc;
+ }
+
+/*=============================================================================
+ Headings
+=============================================================================*/
+
+ h1, h2, h3, h4, h5, h6
+ {
+ text-align: left;
+ margin: 1em 0em 0.5em 0em;
+ font-weight: bold;
+ }
+
+ h1 { font: 140% }
+ h2 { font: bold 140% }
+ h3 { font: bold 130% }
+ h4 { font: bold 120% }
+ h5 { font: italic 110% }
+ h6 { font: italic 100% }
+
+ /* Top page titles */
+ title,
+ h1.title,
+ h2.title
+ h3.title,
+ h4.title,
+ h5.title,
+ h6.title,
+ .refentrytitle
+ {
+ font-weight: bold;
+ margin-bottom: 1pc;
+ }
+
+ h1.title { font-size: 140% }
+ h2.title { font-size: 140% }
+ h3.title { font-size: 130% }
+ h4.title { font-size: 120% }
+ h5.title { font-size: 110% }
+ h6.title { font-size: 100% }
+
+ .section h1
+ {
+ margin: 0em 0em 0.5em 0em;
+ font-size: 140%;
+ }
+
+ .section h2 { font-size: 140% }
+ .section h3 { font-size: 130% }
+ .section h4 { font-size: 120% }
+ .section h5 { font-size: 110% }
+ .section h6 { font-size: 100% }
+
+ /* Code on titles */
+ h1 tt.computeroutput { font-size: 140% }
+ h2 tt.computeroutput { font-size: 140% }
+ h3 tt.computeroutput { font-size: 130% }
+ h4 tt.computeroutput { font-size: 120% }
+ h5 tt.computeroutput { font-size: 110% }
+ h6 tt.computeroutput { font-size: 100% }
+
+/*=============================================================================
+ Author
+=============================================================================*/
+
+ h3.author
+ {
+ font-size: 100%
+ }
+
+/*=============================================================================
+ Lists
+=============================================================================*/
+
+ li
+ {
+ font-size: 10pt;
+ line-height: 1.3;
+ }
+
+ /* Unordered lists */
+ ul
+ {
+ text-align: left;
+ }
+
+ /* Ordered lists */
+ ol
+ {
+ text-align: left;
+ }
+
+/*=============================================================================
+ Links
+=============================================================================*/
+
+ a
+ {
+ text-decoration: none; /* no underline */
+ border: none;
+ }
+
+ a:hover
+ {
+ text-decoration: underline;
+ border: none;
+ }
+
+/*=============================================================================
+ Spirit style navigation
+=============================================================================*/
+
+ .spirit-nav
+ {
+ text-align: right;
+ margin: 16px;
+ }
+
+ .spirit-nav a
+ {
+ color: white;
+ padding-left: 0.5em;
+ }
+
+ .spirit-nav img
+ {
+ border-width: 0px;
+ }
+
+/*=============================================================================
+ Table of contents
+=============================================================================*/
+
+ .toc
+ {
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.1pc 1pc 0.1pc 1pc;
+ font-size: 10pt;
+ line-height: 1.15;
+ }
+
+ .toc-main
+ {
+ text-align: center;
+ margin: 3pc 16% 3pc 16%;
+ padding: 3pc 1pc 3pc 1pc;
+ line-height: 0.1;
+ }
+
+ .boost-toc
+ {
+ float: right;
+ padding: 0.5pc;
+ }
+
+/*=============================================================================
+ Tables
+=============================================================================*/
+
+ .table-title,
+ div.table p.title
+ {
+ margin-left: 4%;
+ padding-right: 0.5em;
+ padding-left: 0.5em;
+ }
+
+ .informaltable table,
+ .table table
+ {
+ width: 92%;
+ margin-left: 4%;
+ margin-right: 4%;
+ }
+
+ div.informaltable table,
+ div.table table
+ {
+ padding: 4px;
+ }
+
+ /* Table Cells */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ padding: 0.5em;
+ text-align: left;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ padding: 0.5em 0.5em 0.5em 0.5em;
+ border: 1pt solid white;
+ font-size: 120%;
+ }
+
+/*=============================================================================
+ Blurbs
+=============================================================================*/
+
+ .admonition-graphic {
+ float: left;
+ padding-top: 10px;
+ }
+
+ .admonition-body {
+ padding: 10px;
+ margin-left: 50px;
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ .admonition-title {
+ font-weight: bold;
+ }
+
+ .admonition-content {
+
+ }
+
+
+ div.note,
+ div.tip,
+ div.important,
+ div.caution,
+ div.warning,
+ div.sidebar
+ {
+ font-size: 10pt;
+ line-height: 1.2;
+ display: block;
+ margin: 1pc 4% 0pc 4%;
+ padding: 0.5pc 0.5pc 0.5pc 0.5pc;
+ }
+
+ div.sidebar img
+ {
+ padding: 1pt;
+ }
+
+
+
+/*=============================================================================
+ Callouts
+=============================================================================*/
+ .line_callout_bug img
+ {
+ float: left;
+ position:relative;
+ left: 4px;
+ top: -12px;
+ clear: left;
+ margin-left:-22px;
+ }
+
+ .callout_bug img
+ {
+ }
+
+
+
+/*=============================================================================
+ Variable Lists
+=============================================================================*/
+
+ /* Make the terms in definition lists bold */
+ div.variablelist dl dt,
+ span.term
+ {
+ font-weight: bold;
+ font-size: 10pt;
+ }
+
+ div.variablelist table tbody tr td
+ {
+ text-align: left;
+ vertical-align: top;
+ padding: 0em 2em 0em 0em;
+ font-size: 10pt;
+ margin: 0em 0em 0.5em 0em;
+ line-height: 1;
+ }
+
+ /* Make the terms in definition lists bold */
+ div.variablelist dl dt
+ {
+ margin-bottom: 0.2em;
+ }
+
+ div.variablelist dl dd
+ {
+ margin: 0em 0em 0.5em 2em;
+ font-size: 10pt;
+ }
+
+ div.variablelist table tbody tr td p
+ div.variablelist dl dd p
+ {
+ margin: 0em 0em 0.5em 0em;
+ line-height: 1;
+ }
+
+/*=============================================================================
+ Misc
+=============================================================================*/
+
+ /* Title of books and articles in bibliographies */
+ span.title
+ {
+ font-style: italic;
+ }
+
+ span.underline
+ {
+ text-decoration: underline;
+ }
+
+ span.strikethrough
+ {
+ text-decoration: line-through;
+ }
+
+ /* Copyright, Legal Notice */
+ div div.legalnotice p
+ {
+ text-align: left
+ }
+
+/*=============================================================================
+ Colors
+=============================================================================*/
+
+ @media screen
+ {
+ /* Links */
+ a
+ {
+ color: #0C7445;
+ border: none;
+ }
+
+ a:visited
+ {
+ color: #663974;
+ border: none;
+ }
+
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
+ h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
+ h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
+ {
+ text-decoration: none; /* no underline */
+ color: #000000;
+ border: none;
+ }
+
+ /* Syntax Highlighting */
+
+ /* John Maddock style */
+ .keyword { color: #3300CC; }
+ .identifier { color: #000000; }
+ .special { color: #707070; }
+ .preprocessor { color: #009999; }
+ .char { color: teal; }
+ .comment { color: #009900; }
+ .string { color: teal; }
+ .number { color: teal; }
+ .white_bkd { background-color: #E8FBE9; }
+ .dk_grey_bkd { background-color: #A0DAAC; }
+
+ /* Matias Capeletto style
+ .keyword { color: #0000AA; }
+ .identifier { color: #000000; }
+ .special { color: #707070; }
+ .preprocessor { color: #402080; }
+ .char { color: teal; }
+ .comment { color: #800000; }
+ .string { color: teal; }
+ .number { color: teal; }
+ .white_bkd { background-color: #E8FBE9; }
+ .dk_grey_bkd { background-color: #A0DAAC; }
+ */
+
+ /* Copyright, Legal Notice */
+ .copyright
+ {
+ color: #666666;
+ font-size: small;
+ }
+
+ div div.legalnotice p
+ {
+ color: #666666;
+ }
+
+ /* Program listing */
+ pre.synopsis
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ .programlisting,
+ .screen
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ td .programlisting,
+ td .screen
+ {
+ border: 0px solid #DCDCDC;
+ }
+
+ /* Blurbs */
+ /*
+ div.note,
+ div.tip,
+ div.important,
+ div.caution,
+ div.warning,*/
+ div.sidebar
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc-main
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+
+ /* Tables */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ border: 1px solid #DCDCDC;
+ background-color: #FAFFFB;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ background-color: #E3F9E4;
+ border: 1px solid #DCDCDC;
+ }
+
+ /* Misc */
+ span.highlight
+ {
+ color: #00A000;
+ }
+ }
+
+ @media print
+ {
+ /* Links */
+ a
+ {
+ color: black;
+ }
+
+ a:visited
+ {
+ color: black;
+ }
+
+ .spirit-nav
+ {
+ display: none;
+ }
+
+ /* Program listing */
+ pre.synopsis
+ {
+ border: 1px solid gray;
+ background-color: #FAFFFB;
+ }
+
+ .programlisting,
+ .screen
+ {
+ border: 1px solid gray;
+ background-color: #FAFFFB;
+ }
+
+ td .programlisting,
+ td .screen
+ {
+ border: 0px solid #DCDCDC;
+ }
+
+ /* Table of contents */
+ .toc
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ /* Table of contents */
+ .toc-main
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ background-color: #FAFFFB;
+ }
+
+ .informaltable table,
+ .table table
+ {
+ border: 1px solid #DCDCDC;
+ border-bottom: 2px solid #9D9D9D;
+ border-right: 2px solid #9D9D9D;
+ border-collapse: collapse;
+ background-color: #FAFFFB;
+ }
+
+ /* Tables */
+ div.informaltable table tr td,
+ div.table table tr td
+ {
+ border: 1px solid #DCDCDC;
+ background-color: #FAFFFB;
+ }
+
+ div.informaltable table tr th,
+ div.table table tr th
+ {
+ border: 1px solid #DCDCDC;
+ background-color: #FAFFFB;
+ }
+
+ /* Misc */
+ span.highlight
+ {
+ font-weight: bold;
+ }
+ }

Added: sandbox/doc_test/doc/xhtml/document_to_test_formatting/basic_formatting_tests.html
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/document_to_test_formatting/basic_formatting_tests.html 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,1184 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head xmlns="http://www.w3.org/1999/xhtml">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Basic
+ Formatting Tests</title>
+ <link xmlns="" rel="stylesheet" href="../boostbook.css" type="text/css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.70.1" />
+ <link rel="start" href="../index.html" title="Document To Test Formatting" />
+ <link rel="up" href="../index.html" title="Document To Test Formatting" />
+ <link rel="prev" href="introduction.html" title="Introduction" />
+ <link rel="next" href="images.html" title="Images" />
+ </head>
+ <body>
+ <script type="text/javascript" src="../grouped_links.js"></script>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading_navigation_box">
+ <div class="grouped_links" id="chapters_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ '../boost_libs_grouped_links.xml',
+ 'chapters_select_box',
+ 'http://www.boost.org/libs/');
+ </script>
+ </div>
+ <div class="grouped_links" id="sections_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ '../sections_grouped_links.xml',
+ 'sections_select_box',
+ '.././');
+ </script>
+ </div>
+ </div>
+ <div class="heading_search_box">
+ <form id="cref" action="http://google.com/cse">
+ <input type="hidden" name="cref" value="" />
+ <div> Search Boost </div>
+ <div>
+ <input class="search_box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="p" href="introduction.html">
+ <img src="../../../doc/html/images/prev.png" alt="Prev" />
+ </a>
+ <a accesskey="u" href="../index.html">
+ <img src="../../../doc/html/images/up.png" alt="Up" />
+ </a>
+ <a accesskey="h" href="../index.html">
+ <img src="../../../doc/html/images/home.png" alt="Home" />
+ </a>
+ <a accesskey="n" href="images.html">
+ <img src="../../../doc/html/images/next.png" alt="Next" />
+ </a>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both">
+ <a id="document_to_test_formatting.basic_formatting_tests"></a>
+ <a href="basic_formatting_tests.html" title="Basic&#10; Formatting Tests">Basic
+ Formatting Tests</a>
+ </h2>
+ </div>
+ </div>
+ </div>
+ <a id="document_to_test_formatting.basic_formatting_tests.font_styles"></a>
+ <h5><a id="id2565490"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.font_styles">Font
+ Styles</a>
+ </h5>
+ <p>
+ Here we go with some inline formatting: <span class="emphasis"><em>italic</em></span>, <span class="bold"><strong>bold</strong></span>, <span class="underline">underline</span>,
+ <code class="literal">teletype</code>, <span class="strikethrough">strikethrough</span>,
+ we can combine styles as well: <span class="emphasis"><em><span class="bold"><strong>bold italic</strong></span></em></span>,
+ <span class="underline"><code class="literal">teletype with underline</code></span>.
+ </p>
+ <a id="document_to_test_formatting.basic_formatting_tests.replaceable_text"></a>
+ <h5><a id="id2565560"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.replaceable_text">Replaceable
+ Text</a>
+ </h5>
+ <p>
+ Text that is intended to be user-replaceable is
+ <em class="replaceable"><code>
+ rendered like this
+ </code></em>
+ .
+ </p>
+ <a id="document_to_test_formatting.basic_formatting_tests.quotations"></a>
+ <h5><a id="id2564336"></a>
+ Quotations
+ </h5>
+ <p>
+ Here we go: “<span class="quote">A question that sometimes drives me hazy: am I or are the
+ others crazy?</span>”--Einstein
+ </p>
+ <p>
+ Note the proper left and right quote marks. Also, while you can simply use
+ ordinary quote marks like "quoted", our quotation, above, will generate
+ correct DocBook quotations (e.g. &lt;quote&gt;quoted&lt;/quote&gt;).
+ </p>
+ <p>
+ Like all phrase elements, quotations may be nested. Example:
+ </p>
+ <p>
+ “<span class="quote">Here's the rule for bargains: ‘<span class="quote">Do other men, for they would do
+ you.</span>’ That's the true business precept.</span>”
+ </p>
+ <a id="document_to_test_formatting.basic_formatting_tests.inline_code"></a>
+ <h5><a id="id2564392"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.inline_code">Inline
+ Code</a>
+ </h5>
+ <p>
+ This text has inlined code <code class="computeroutput"><span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span> <span class="special">}</span></code> in it. The
+ code should be syntax highlighted.
+ </p>
+ <a id="document_to_test_formatting.basic_formatting_tests.links"></a>
+ <h5><a id="id2564467"></a>
+ Links
+ </h5>
+ <p>
+ Try this: <a xmlns="" href="http://www.boost.org" target="_top">this is <span xmlns="http://www.w3.org/1999/xhtml" class="bold"><strong>boost's</strong></span>
+ website....</a> it should be visible as a link.
+ </p>
+ <a id="document_to_test_formatting.basic_formatting_tests.footnotes"></a>
+ <h5><a id="id2564504"></a>
+ Footnotes
+ </h5>
+ <p>
+ Here's one
+ <sup>[<a id="id2564522" href="#ftn.id2564522">1</a>]</sup>
+ .
+ </p>
+ <p>
+ And here's another
+ <sup>[<a id="id2564533" href="#ftn.id2564533">2</a>]</sup>
+ .
+ </p>
+ <a id="document_to_test_formatting.basic_formatting_tests.lists"></a>
+ <h5><a id="id2564549"></a>
+ Lists
+ </h5>
+ <p>
+ A numbered list:
+ </p>
+ <div class="orderedlist">
+ <ol type="1">
+ <li>
+ One
+ </li>
+ <li>
+ Two
+ </li>
+ <li>
+ Three
+ <div class="orderedlist"><ol type="a"><li>
+ Three.a
+ </li><li>
+ Three.b
+ </li><li>
+ Three.c
+ </li></ol></div></li>
+ <li>
+ Four
+ <div class="orderedlist"><ol type="a"><li>
+ Four.a
+ <div class="orderedlist"><ol type="i"><li>
+ Four.a.i
+ </li><li>
+ Four.a.ii
+ </li></ol></div></li></ol></div></li>
+ <li>
+ Five
+ </li>
+ </ol>
+ </div>
+ <p>
+ An unordered list:
+ </p>
+ <div class="itemizedlist">
+ <ul type="disc">
+ <li>
+ First
+ </li>
+ <li>
+ Second
+ </li>
+ <li>
+ Third
+ </li>
+ </ul>
+ </div>
+ <p>
+ A mixture of the two:
+ </p>
+ <div class="orderedlist">
+ <ol type="1">
+ <li>
+ 1
+ <div class="itemizedlist"><ul type="disc"><li>
+ 1.a
+ <div class="orderedlist"><ol type="a"><li>
+ 1.a.1
+ </li><li>
+ 1.a.2
+ </li></ol></div></li><li>
+ 1.b
+ </li></ul></div></li>
+ <li>
+ 2
+ <div class="itemizedlist"><ul type="disc"><li>
+ 2.a
+ </li><li>
+ 2.b
+ <div class="orderedlist"><ol type="a"><li>
+ 2.b.1
+ </li><li>
+ 2.b.2
+ <div class="itemizedlist"><ul type="circle"><li>
+ 2.b.2.a
+ </li><li>
+ 2.b.2.b
+ </li></ul></div></li></ol></div></li></ul></div></li>
+ </ol>
+ </div>
+ <a id="document_to_test_formatting.basic_formatting_tests.code_blocks"></a>
+ <h5><a id="id2564752"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.code_blocks">Code
+ Blocks</a>
+ </h5>
+ <p>
+ These should be syntax highlighted:
+ </p>
+ <pre class="programlisting">
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="comment">// Sample code
+</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Hello, World\n"</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+ <p>
+ Now let's include a larger example, this may span several pages and should
+ not be chopped off half way through... some FO processors get this wrong!
+ </p>
+ <pre class="programlisting">
+<span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">sub_match</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*&gt;</span> <span class="identifier">csub_match</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="keyword">const</span> <span class="keyword">wchar_t</span><span class="special">*&gt;</span> <span class="identifier">wcsub_match</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">&gt;</span> <span class="identifier">ssub_match</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="special">&gt;</span> <span class="identifier">wssub_match</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">sub_match</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">difference_type</span> <span class="identifier">difference_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">BidirectionalIterator</span> <span class="identifier">iterator</span><span class="special">;</span>
+
+ <span class="keyword">bool</span> <span class="identifier">matched</span><span class="special">;</span>
+
+ <span class="identifier">difference_type</span> <span class="identifier">length</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">operator</span> <span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;()</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;</span> <span class="identifier">str</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">int</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">value_type</span><span class="special">&gt;&amp;</span> <span class="identifier">s</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+ <span class="keyword">int</span> <span class="identifier">compare</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">value_type</span><span class="special">*</span> <span class="identifier">s</span><span class="special">)</span><span class="keyword">const</span><span class="special">;</span>
+<span class="preprocessor">#ifdef</span> <span class="identifier">BOOST_REGEX_MATCH_EXTRA</span>
+ <span class="keyword">typedef</span> <span class="identifier">implementation</span><span class="special">-</span><span class="keyword">private</span> <span class="identifier">capture_sequence_type</span><span class="special">;</span>
+ <span class="keyword">const</span> <span class="identifier">capture_sequence_type</span><span class="special">&amp;</span> <span class="identifier">captures</span><span class="special">()</span><span class="keyword">const</span><span class="special">;</span>
+<span class="preprocessor">#endif</span>
+<span class="special">};</span>
+<span class="comment">//
+</span><span class="comment">// comparisons to another sub_match:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+
+<span class="comment">//
+</span><span class="comment">// comparisons to a basic_string:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="comment">//
+</span><span class="comment">// comparisons to a pointer to a character array:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">]</span>##<span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="comment">//
+</span><span class="comment">// comparisons to a single character:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">==</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">!=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&gt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="keyword">operator</span> <span class="special">&lt;=</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">lhs</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="comment">//
+</span><span class="comment">// addition operators:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+ <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">s</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">,</span> <span class="identifier">Allocator</span><span class="special">&gt;</span>
+ <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">,</span>
+ <span class="identifier">traits</span><span class="special">,</span>
+ <span class="identifier">Allocator</span><span class="special">&gt;&amp;</span> <span class="identifier">s</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span>
+ <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">s</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span>
+ <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span> <span class="special">*</span> <span class="identifier">s</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span>
+ <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span>
+ <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">s</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">iterator_traits</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;::</span><span class="identifier">value_type</span><span class="special">&gt;</span>
+ <span class="keyword">operator</span> <span class="special">+</span> <span class="special">(</span><span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m1</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m2</span><span class="special">);</span>
+
+<span class="comment">//
+</span><span class="comment">// stream inserter:
+</span><span class="comment">//
+</span><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">charT</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">traits</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">BidirectionalIterator</span><span class="special">&gt;</span>
+<span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">&gt;&amp;</span>
+ <span class="keyword">operator</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">basic_ostream</span><span class="special">&lt;</span><span class="identifier">charT</span><span class="special">,</span> <span class="identifier">traits</span><span class="special">&gt;&amp;</span> <span class="identifier">os</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">sub_match</span><span class="special">&lt;</span><span class="identifier">BidirectionalIterator</span><span class="special">&gt;&amp;</span> <span class="identifier">m</span><span class="special">);</span>
+
+<span class="special">}</span> <span class="comment">// namespace boost
+</span></pre>
+ <a id="document_to_test_formatting.basic_formatting_tests.preformatted_text"></a>
+ <h5><a id="id2619927"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.preformatted_text">Preformatted
+ text</a>
+ </h5>
+ <p>
+ Here's some sample program output:
+ </p>
+ <pre class="programlisting">F test for equal standard deviations
+____________________________________
+
+Sample 1:
+Number of Observations = 240
+Sample Standard Deviation = 65.549
+
+Sample 2:
+Number of Observations = 240
+Sample Standard Deviation = 61.854
+
+Test Statistic = 1.123
+
+CDF of test statistic: = 8.148e-001
+Upper Critical Value at alpha: = 1.238e+000
+Upper Critical Value at alpha/2: = 1.289e+000
+Lower Critical Value at alpha: = 8.080e-001
+Lower Critical Value at alpha/2: = 7.756e-001
+
+Results for Alternative Hypothesis and alpha = 0.0500
+
+Alternative Hypothesis Conclusion
+Standard deviations are unequal (two sided test) REJECTED
+Standard deviation 1 is less than standard deviation 2 REJECTED
+Standard deviation 1 is greater than standard deviation 2 REJECTED
+</pre>
+ <a id="document_to_test_formatting.basic_formatting_tests.blockquote"></a>
+ <h5><a id="id2619999"></a>
+ Blockquote
+ </h5>
+ <p>
+ Lets indent the next paragraph:
+ </p>
+ <div class="blockquote">
+ <blockquote class="blockquote">
+ <p>
+ </p>
+ <p>
+ Here we go!!!
+ </p>
+ <p>
+ </p>
+ </blockquote>
+ </div>
+ <a id="document_to_test_formatting.basic_formatting_tests.admonishments"></a>
+ <h5><a id="id2620035"></a>
+ Admonishments
+ </h5>
+ <p>
+ There are four admonishments supported by Docbook XML:
+ </p>
+ <div xmlns="" class="note">
+ <div class="admonition-graphic">
+ <img alt="[Note]" src="../../../doc/html/images/note.png" />
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Note</div>
+ <div class="admonition-content">
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ This is a note
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ </div>
+ </div>
+ </div>
+ <div xmlns="" class="tip">
+ <div class="admonition-graphic">
+ <img alt="[Tip]" src="../../../doc/html/images/tip.png" />
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Tip</div>
+ <div class="admonition-content">
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ This is a tip
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ </div>
+ </div>
+ </div>
+ <div xmlns="" class="important">
+ <div class="admonition-graphic">
+ <img alt="[Important]" src="../../../doc/html/images/important.png" />
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Important</div>
+ <div class="admonition-content">
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ This is important
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ </div>
+ </div>
+ </div>
+ <div xmlns="" class="caution">
+ <div class="admonition-graphic">
+ <img alt="[Caution]" src="../../../doc/html/images/caution.png" />
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Caution</div>
+ <div class="admonition-content">
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ This is a caution
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ </div>
+ </div>
+ </div>
+ <div xmlns="" class="warning">
+ <div class="admonition-graphic">
+ <img alt="[Warning]" src="../../../doc/html/images/warning.png" />
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Warning</div>
+ <div class="admonition-content">
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ This is a warning
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ They can contain more than one paragraph.
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ </div>
+ </div>
+ </div>
+ <a id="document_to_test_formatting.basic_formatting_tests.headings"></a>
+ <h5><a id="id2620116"></a>
+ Headings
+ </h5>
+ <p>
+ Now try rendering some heading styles:
+ </p>
+ <a id="document_to_test_formatting.basic_formatting_tests.heading_1"></a>
+ <h2><a id="id2620143"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.heading_1">Heading
+ 1</a>
+ </h2>
+ <a id="document_to_test_formatting.basic_formatting_tests.heading_2"></a>
+ <h3><a id="id2620165"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.heading_2">Heading
+ 2</a>
+ </h3>
+ <a id="document_to_test_formatting.basic_formatting_tests.heading_3"></a>
+ <h4><a id="id2620188"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.heading_3">Heading
+ 3</a>
+ </h4>
+ <a id="document_to_test_formatting.basic_formatting_tests.heading_4"></a>
+ <h5><a id="id2620210"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.heading_4">Heading
+ 4</a>
+ </h5>
+ <a id="document_to_test_formatting.basic_formatting_tests.heading_5"></a>
+ <h6><a id="id2620232"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.heading_5">Heading
+ 5</a>
+ </h6>
+ <a id="document_to_test_formatting.basic_formatting_tests.heading_6"></a>
+ <h3><a id="id2620254"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.heading_6">Heading
+ 6</a>
+ </h3>
+ <a id="document_to_test_formatting.basic_formatting_tests.blurbs"></a>
+ <h5><a id="id2620276"></a>
+ Blurbs
+ </h5>
+ <div class="sidebar">
+ <p>
+ <span class="bold"><strong>An eye catching advertisement or note...</strong></span>
+ </p>
+ <p>
+ These should be rendered in a manner similar to admonishments.
+ </p>
+ <p>
+ They can contain more than one paragraph.
+ </p>
+ </div>
+ <a id="document_to_test_formatting.basic_formatting_tests.tables"></a>
+ <h5><a id="id2620321"></a>
+ Tables
+ </h5>
+ <p>
+ Here's a big table with code and other tricky things:
+ </p>
+ <div class="table">
+ <a id="id2620339"></a>
+ <p class="title">
+ <b>Table 1. Notes on the Implementation of the Beta Distribution</b>
+ </p>
+ <div class="table-contents">
+ <table xmlns="" class="table" summary="Notes on the Implementation of the Beta Distribution">
+ <colgroup>
+ <col xmlns="http://www.w3.org/1999/xhtml" />
+ <col xmlns="http://www.w3.org/1999/xhtml" />
+ </colgroup>
+ <thead xmlns="http://www.w3.org/1999/xhtml">
+ <tr>
+ <th>
+ <p>
+ Function
+ </p>
+ </th>
+ <th>
+ <p>
+ Implementation Notes
+ </p>
+ </th>
+ </tr>
+ </thead>
+ <tbody xmlns="http://www.w3.org/1999/xhtml">
+ <tr>
+ <td>
+ <p>
+ pdf
+ </p>
+ </td>
+ <td>
+ <p>
+ f(x;α,β) = x<sup>α - 1</sup> (1 - x)<sup>β -1</sup> / B(α, β) Implemented using ibeta_derivative(a, b,
+ x).
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ cdf
+ </p>
+ </td>
+ <td>
+ <p>
+ Using the incomplete beta function ibeta(a, b, x)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ cdf complement
+ </p>
+ </td>
+ <td>
+ <p>
+ ibetac(a, b, x)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ quantile
+ </p>
+ </td>
+ <td>
+ <p>
+ Using the inverse incomplete beta function ibeta_inv(a, b, p)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ quantile from the complement
+ </p>
+ </td>
+ <td>
+ <p>
+ ibetac_inv(a, b, q)
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ mean
+ </p>
+ </td>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span><span class="special">/(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">)</span></code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ variance
+ </p>
+ </td>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span> <span class="special">*</span>
+ <span class="identifier">b</span> <span class="special">/</span>
+ <span class="special">(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">)^</span><span class="number">2</span> <span class="special">*</span>
+ <span class="special">(</span><span class="identifier">a</span>
+ <span class="special">+</span> <span class="identifier">b</span>
+ <span class="special">+</span> <span class="number">1</span><span class="special">)</span></code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ mode
+ </p>
+ </td>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="special">(</span><span class="identifier">a</span><span class="special">-</span><span class="number">1</span><span class="special">)</span>
+ <span class="special">/</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">+</span> <span class="identifier">b</span> <span class="special">+</span> <span class="number">2</span><span class="special">)</span></code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ skewness
+ </p>
+ </td>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="number">2</span> <span class="special">(</span><span class="identifier">b</span><span class="special">-</span><span class="identifier">a</span><span class="special">)</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">+</span><span class="number">1</span><span class="special">)/(</span><span class="identifier">a</span><span class="special">+</span><span class="identifier">b</span><span class="special">+</span><span class="number">2</span><span class="special">)</span>
+ <span class="special">*</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</span> <span class="special">*</span> <span class="identifier">b</span><span class="special">)</span></code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ kurtosis excess
+ </p>
+ </td>
+ <td>
+ <p>
+ <span class="inlinemediaobject"><img src="../../beta_dist_kurtosis.png" alt="beta_dist_kurtosis" /></span>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ kurtosis
+ </p>
+ </td>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">kurtosis</span> <span class="special">+</span>
+ <span class="number">3</span></code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ parameter estimation
+ </p>
+ </td>
+ <td>
+ <p>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ alpha
+ </p>
+ <p>
+ from mean and variance
+ </p>
+ </td>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mean</span> <span class="special">*</span>
+ <span class="special">((</span> <span class="special">(</span><span class="identifier">mean</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span> <span class="special">-</span>
+ <span class="identifier">mean</span><span class="special">))</span>
+ <span class="special">/</span> <span class="identifier">variance</span><span class="special">)-</span> <span class="number">1</span><span class="special">)</span></code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ beta
+ </p>
+ <p>
+ from mean and variance
+ </p>
+ </td>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="special">(</span><span class="number">1</span>
+ <span class="special">-</span> <span class="identifier">mean</span><span class="special">)</span> <span class="special">*</span> <span class="special">(((</span><span class="identifier">mean</span> <span class="special">*</span> <span class="special">(</span><span class="number">1</span> <span class="special">-</span>
+ <span class="identifier">mean</span><span class="special">))</span>
+ <span class="special">/</span><span class="identifier">variance</span><span class="special">)-</span><span class="number">1</span><span class="special">)</span></code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ The member functions <code class="computeroutput"><span class="identifier">estimate_alpha</span></code>
+ and <code class="computeroutput"><span class="identifier">estimate_beta</span></code>
+ </p>
+ <p>
+ from cdf and probability x and <span class="bold"><strong>either</strong></span>
+ <code class="computeroutput"><span class="identifier">alpha</span></code> or <code class="computeroutput"><span class="identifier">beta</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Implemented in terms of the inverse incomplete beta functions ibeta_inva,
+ and ibeta_invb respectively.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">estimate_alpha</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ibeta_inva</span><span class="special">(</span><span class="identifier">beta</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">probability</span><span class="special">)</span></code>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">estimate_beta</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ibeta_invb</span><span class="special">(</span><span class="identifier">alpha</span><span class="special">,</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">probability</span><span class="special">)</span></code>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break" />
+ <a id="document_to_test_formatting.basic_formatting_tests.variable_lists"></a>
+ <h5><a id="id2621394"></a>
+ <a href="basic_formatting_tests.html#document_to_test_formatting.basic_formatting_tests.variable_lists">Variable
+ Lists</a>
+ </h5>
+ <div class="variablelist">
+ <p class="title">
+ <b>A Variable List</b>
+ </p>
+ <dl>
+ <dt>
+ <span class="term">term 1</span>
+ </dt>
+ <dd>
+ The definition of term 1
+ </dd>
+ <dt>
+ <span class="term">term 2</span>
+ </dt>
+ <dd>
+ The definition of term 2
+ </dd>
+ <dt>
+ <span class="term">term 3</span>
+ </dt>
+ <dd>
+ The definition of term 3
+ </dd>
+ </dl>
+ </div>
+ <a id="document_to_test_formatting.basic_formatting_tests.callouts"></a>
+ <h5><a id="id2621450"></a>
+ Callouts
+ </h5>
+ <p>
+ Here's some code with left-placed callouts:
+ </p>
+ <p>
+ </p>
+ <p>
+
+</p>
+ <pre class="programlisting">
+<span class="keyword">class</span> <span class="identifier">x</span>
+<span class="special">{</span>
+<span class="keyword">public</span><span class="special">:</span>
+
+ <span class="line_callout_bug"><a id="document_to_test_formatting2co" href="basic_formatting_tests.html#document_to_test_formatting2"><img xmlns="" src="../images/callouts/1.png" alt="1" border="0" /></a></span><span class="identifier">x</span><span class="special">()</span> <span class="special">:</span> <span class="identifier">n</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="line_callout_bug"><a id="document_to_test_formatting3co" href="basic_formatting_tests.html#document_to_test_formatting3"><img xmlns="" src="../images/callouts/2.png" alt="2" border="0" /></a></span><span class="special">~</span><span class="identifier">x</span><span class="special">()</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="line_callout_bug"><a id="document_to_test_formatting4co" href="basic_formatting_tests.html#document_to_test_formatting4"><img xmlns="" src="../images/callouts/3.png" alt="3" border="0" /></a></span><span class="keyword">int</span> <span class="identifier">get</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">n</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="line_callout_bug"><a id="document_to_test_formatting5co" href="basic_formatting_tests.html#document_to_test_formatting5"><img xmlns="" src="../images/callouts/4.png" alt="4" border="0" /></a></span><span class="keyword">void</span> <span class="identifier">set</span><span class="special">(</span><span class="keyword">int</span> <span class="identifier">n_</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">n</span> <span class="special">=</span> <span class="identifier">n_</span><span class="special">;</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+ <p>
+ </p>
+ <p>
+ </p>
+ <p>
+ </p>
+ <div class="calloutlist">
+ <table border="0" summary="Callout list">
+ <tr>
+ <td width="5%" valign="top" align="left"><a id="document_to_test_formatting2"></a>1 </td>
+ <td valign="top" align="left">
+ <p> Constructor </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="5%" valign="top" align="left"><a id="document_to_test_formatting3"></a>2 </td>
+ <td valign="top" align="left">
+ <p> Destructor </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="5%" valign="top" align="left"><a id="document_to_test_formatting4"></a>3 </td>
+ <td valign="top" align="left">
+ <p> Get the <code class="computeroutput"><span class="identifier">n</span></code>
+ member variable </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="5%" valign="top" align="left"><a id="document_to_test_formatting5"></a>4 </td>
+ <td valign="top" align="left">
+ <p> Set the <code class="computeroutput"><span class="identifier">n</span></code>
+ member variable </p>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <p>
+ </p>
+ <p>
+ </p>
+ <p>
+ And again with callouts placed exactly where we put them:
+ </p>
+ <p>
+ </p>
+ <p>
+
+</p>
+ <pre class="programlisting">
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">foo_bar</span><span class="special">()</span> <span class="callout_bug"><a id="document_to_test_formatting0co" href="basic_formatting_tests.html#document_to_test_formatting0"><img xmlns="" src="../images/callouts/1.png" alt="1" border="0" /></a></span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="string">"foo-bar"</span><span class="special">;</span> <span class="callout_bug"><a id="document_to_test_formatting1co" href="basic_formatting_tests.html#document_to_test_formatting1"><img xmlns="" src="../images/callouts/2.png" alt="2" border="0" /></a></span>
+<span class="special">}</span>
+</pre>
+ <p>
+ </p>
+ <p>
+ </p>
+ <p>
+ </p>
+ <div class="calloutlist">
+ <table border="0" summary="Callout list">
+ <tr>
+ <td width="5%" valign="top" align="left"><a id="document_to_test_formatting0"></a>1 </td>
+ <td valign="top" align="left">
+ <p> The <span class="emphasis"><em>Mythical</em></span> FooBar. See <a xmlns="" href="http://en.wikipedia.org/wiki/Foobar" target="_top">Foobar
+ for details</a> </p>
+ </td>
+ </tr>
+ <tr>
+ <td width="5%" valign="top" align="left"><a id="document_to_test_formatting1"></a>2 </td>
+ <td valign="top" align="left">
+ <p> return 'em, foo-bar man! </p>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <p>
+ </p>
+ <p>
+ </p>
+ <div class="footnotes">
+ <br />
+ <hr width="100" align="left" />
+ <div class="footnote">
+ <p><sup>[<a id="ftn.id2564522" href="#id2564522">1</a>] </sup>
+ A sample footnote
+ </p>
+ </div>
+ <div class="footnote">
+ <p><sup>[<a id="ftn.id2564533" href="#id2564533">2</a>] </sup>
+ Another sample footnote
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="p" href="introduction.html">
+ <img src="../../../doc/html/images/prev.png" alt="Prev" />
+ </a>
+ <a accesskey="u" href="../index.html">
+ <img src="../../../doc/html/images/up.png" alt="Up" />
+ </a>
+ <a accesskey="h" href="../index.html">
+ <img src="../../../doc/html/images/home.png" alt="Home" />
+ </a>
+ <a accesskey="n" href="images.html">
+ <img src="../../../doc/html/images/next.png" alt="Next" />
+ </a>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision">Copyright © 2007 John Maddock, Joel de Guzman and Eric Niebler</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Added: sandbox/doc_test/doc/xhtml/document_to_test_formatting/images.html
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/document_to_test_formatting/images.html 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head xmlns="http://www.w3.org/1999/xhtml">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Images</title>
+ <link xmlns="" rel="stylesheet" href="../boostbook.css" type="text/css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.70.1" />
+ <link rel="start" href="../index.html" title="Document To Test Formatting" />
+ <link rel="up" href="../index.html" title="Document To Test Formatting" />
+ <link rel="prev" href="basic_formatting_tests.html" title="Basic&#10; Formatting Tests" />
+ <link rel="next" href="test.html" title=" test HTML4 symbols" />
+ </head>
+ <body>
+ <script type="text/javascript" src="../grouped_links.js"></script>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading_navigation_box">
+ <div class="grouped_links" id="chapters_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ '../boost_libs_grouped_links.xml',
+ 'chapters_select_box',
+ 'http://www.boost.org/libs/');
+ </script>
+ </div>
+ <div class="grouped_links" id="sections_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ '../sections_grouped_links.xml',
+ 'sections_select_box',
+ '.././');
+ </script>
+ </div>
+ </div>
+ <div class="heading_search_box">
+ <form id="cref" action="http://google.com/cse">
+ <input type="hidden" name="cref" value="" />
+ <div> Search Boost </div>
+ <div>
+ <input class="search_box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="p" href="basic_formatting_tests.html">
+ <img src="../../../doc/html/images/prev.png" alt="Prev" />
+ </a>
+ <a accesskey="u" href="../index.html">
+ <img src="../../../doc/html/images/up.png" alt="Up" />
+ </a>
+ <a accesskey="h" href="../index.html">
+ <img src="../../../doc/html/images/home.png" alt="Home" />
+ </a>
+ <a accesskey="n" href="test.html">
+ <img src="../../../doc/html/images/next.png" alt="Next" />
+ </a>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both">
+ <a id="document_to_test_formatting.images"></a>
+ Images
+ </h2>
+ </div>
+ </div>
+ </div>
+ <p>
+ These are tricky enough that they warrent their own section.
+ </p>
+ <p>
+ Let's start with a PNG file that's set to 120dpi, it should render at a sensible
+ size in both html and PDF forms. It should print OK too!
+ </p>
+ <p>
+ <span class="inlinemediaobject"><img src="../../digamma3.png" alt="digamma3" /></span>
+ </p>
+ <p>
+ Now try again with a sample SVG image:
+ </p>
+ <p>
+ <span class="inlinemediaobject"><img src="../../open_clipart_library_logo.svg" alt="open_clipart_library_logo" /></span>
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="p" href="basic_formatting_tests.html">
+ <img src="../../../doc/html/images/prev.png" alt="Prev" />
+ </a>
+ <a accesskey="u" href="../index.html">
+ <img src="../../../doc/html/images/up.png" alt="Up" />
+ </a>
+ <a accesskey="h" href="../index.html">
+ <img src="../../../doc/html/images/home.png" alt="Home" />
+ </a>
+ <a accesskey="n" href="test.html">
+ <img src="../../../doc/html/images/next.png" alt="Next" />
+ </a>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision">Copyright © 2007 John Maddock, Joel de Guzman and Eric Niebler</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Added: sandbox/doc_test/doc/xhtml/document_to_test_formatting/introduction.html
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/document_to_test_formatting/introduction.html 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head xmlns="http://www.w3.org/1999/xhtml">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Introduction</title>
+ <link xmlns="" rel="stylesheet" href="../boostbook.css" type="text/css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.70.1" />
+ <link rel="start" href="../index.html" title="Document To Test Formatting" />
+ <link rel="up" href="../index.html" title="Document To Test Formatting" />
+ <link rel="prev" href="../index.html" title="Document To Test Formatting" />
+ <link rel="next" href="basic_formatting_tests.html" title="Basic&#10; Formatting Tests" />
+ </head>
+ <body>
+ <script type="text/javascript" src="../grouped_links.js"></script>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading_navigation_box">
+ <div class="grouped_links" id="chapters_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ '../boost_libs_grouped_links.xml',
+ 'chapters_select_box',
+ 'http://www.boost.org/libs/');
+ </script>
+ </div>
+ <div class="grouped_links" id="sections_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ '../sections_grouped_links.xml',
+ 'sections_select_box',
+ '.././');
+ </script>
+ </div>
+ </div>
+ <div class="heading_search_box">
+ <form id="cref" action="http://google.com/cse">
+ <input type="hidden" name="cref" value="" />
+ <div> Search Boost </div>
+ <div>
+ <input class="search_box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="p" href="../index.html">
+ <img src="../../../doc/html/images/prev.png" alt="Prev" />
+ </a>
+ <a accesskey="u" href="../index.html">
+ <img src="../../../doc/html/images/up.png" alt="Up" />
+ </a>
+ <a accesskey="h" href="../index.html">
+ <img src="../../../doc/html/images/home.png" alt="Home" />
+ </a>
+ <a accesskey="n" href="basic_formatting_tests.html">
+ <img src="../../../doc/html/images/next.png" alt="Next" />
+ </a>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both">
+ <a id="document_to_test_formatting.introduction"></a>
+ Introduction
+ </h2>
+ </div>
+ </div>
+ </div>
+ <p>
+ This document is purely a test case to test out HTML and PDF generation and
+ style.
+ </p>
+ <p>
+ This is some body text.
+ </p>
+ <pre class="programlisting">
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="keyword">double</span> <span class="identifier">d</span> <span class="special">=</span> <span class="number">2.345</span><span class="special">;</span>
+ <span class="keyword">return</span> <span class="identifier">d</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+ <p>
+ We can count in Greek too: α, β, γ.
+ </p>
+ <p>
+ Try some superscrips and subscripts: x<sup>2</sup>, x<sub>i</sub><sup>3</sup>, α<sup>2</sup>, β<sup>α</sup>, ⌊x⌋, ⌊α⌋, ⌈a⌉.
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="p" href="../index.html">
+ <img src="../../../doc/html/images/prev.png" alt="Prev" />
+ </a>
+ <a accesskey="u" href="../index.html">
+ <img src="../../../doc/html/images/up.png" alt="Up" />
+ </a>
+ <a accesskey="h" href="../index.html">
+ <img src="../../../doc/html/images/home.png" alt="Home" />
+ </a>
+ <a accesskey="n" href="basic_formatting_tests.html">
+ <img src="../../../doc/html/images/next.png" alt="Next" />
+ </a>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision">Copyright © 2007 John Maddock, Joel de Guzman and Eric Niebler</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Added: sandbox/doc_test/doc/xhtml/document_to_test_formatting/test.html
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/document_to_test_formatting/test.html 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head xmlns="http://www.w3.org/1999/xhtml">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title> test HTML4 symbols</title>
+ <link xmlns="" rel="stylesheet" href="../boostbook.css" type="text/css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.70.1" />
+ <link rel="start" href="../index.html" title="Document To Test Formatting" />
+ <link rel="up" href="../index.html" title="Document To Test Formatting" />
+ <link rel="prev" href="images.html" title="Images" />
+ </head>
+ <body>
+ <script type="text/javascript" src="../grouped_links.js"></script>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading_navigation_box">
+ <div class="grouped_links" id="chapters_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ '../boost_libs_grouped_links.xml',
+ 'chapters_select_box',
+ 'http://www.boost.org/libs/');
+ </script>
+ </div>
+ <div class="grouped_links" id="sections_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ '../sections_grouped_links.xml',
+ 'sections_select_box',
+ '.././');
+ </script>
+ </div>
+ </div>
+ <div class="heading_search_box">
+ <form id="cref" action="http://google.com/cse">
+ <input type="hidden" name="cref" value="" />
+ <div> Search Boost </div>
+ <div>
+ <input class="search_box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="p" href="images.html">
+ <img src="../../../doc/html/images/prev.png" alt="Prev" />
+ </a>
+ <a accesskey="u" href="../index.html">
+ <img src="../../../doc/html/images/up.png" alt="Up" />
+ </a>
+ <a accesskey="h" href="../index.html">
+ <img src="../../../doc/html/images/home.png" alt="Home" />
+ </a>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both">
+ <a id="document_to_test_formatting.test"></a>
+ test HTML4 symbols
+ </h2>
+ </div>
+ </div>
+ </div>
+ <p>
+ ƒ, Α, Β, Γ, Δ, Ε, Ζ, Η, Θ, Ι, Κ, Λ, Μ, Ν, Ξ, Ο, Π, Ρ, Σ, Τ, Υ, Φ, Χ, Ψ, Ω, α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν,
+ ξ, ο, π, ρ, ς, σ, τ, υ, φ, χ, ψ, ω, ϑ, ϒ, ϖ, •, …, ′, ″, ‾, ⁄, ℘, ℑ, ℜ, ™, ℵ, ←, ↑, →, ↓, ↔, ↵, ⇐, ⇑, ⇒, ⇓, ⇔, ∀,
+ ∂, ∃, ∅, ∇, ∈, ∉, ∋, ∏, ∑, −, ∗, √, ∝, ∞, ∠, ∧, ∨, ∩, ∪, ∫, ∴, ∼, ≅, ≈, ≠, ≡, ≤, ≥, ⊂, ⊃, ⊄, ⊆, ⊇, ⊕, ⊗, ⊥, ⋅, ⌈,
+ ⌉, ⌊, ⌋, 〈, 〉, ◊, ♠, ♣, ♥, ♦,
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="p" href="images.html">
+ <img src="../../../doc/html/images/prev.png" alt="Prev" />
+ </a>
+ <a accesskey="u" href="../index.html">
+ <img src="../../../doc/html/images/up.png" alt="Up" />
+ </a>
+ <a accesskey="h" href="../index.html">
+ <img src="../../../doc/html/images/home.png" alt="Home" />
+ </a>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="copyright">
+ <p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision">Copyright © 2007 John Maddock, Joel de Guzman and Eric Niebler</p>
+ </div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Added: sandbox/doc_test/doc/xhtml/grouped_links.js
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/grouped_links.js 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,189 @@
+/*===========================================================================
+ Copyright (c) 2007 Matias Capeletto
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+===========================================================================*/
+
+/*********************** GroupedLinks API **********************************
+
+In your html body use it like:
+----------------------------------------------------------------------------
+<!-- Include the grouped links java script api
+ Remember to change this line with the path of your grouped_links.js -->
+
+<script type="text/javascript" src="grouped_links.js"></script>
+
+<!-- Add a form with an "id" attribute -->
+
+<form id="boost_libs_list">
+
+ <!-- Call the GroupedLinks "select box" with the following parameters
+ (1) GroupedLinks xml definition url
+ (2) id of the element where the select box will be inserted
+ (3) base url for the links
+ (4) selected item [optional] -->
+
+ <script type="text/javascript">
+
+ grouped_links_select_box('boost_libs_grouped_links.xml',
+ 'boost_libs_list',
+ 'http://www.boost.org/libs/');
+
+ </script>
+
+</form>
+---------------------------------------------------------------------------
+
+Read the html docs for more information.
+
+**************************************************************************/
+
+
+(function() {
+
+// Load an xml file, and pass it to the callback function when it is ready
+
+function asinc_load_xml(url, callback)
+{
+ var XMLHttpRequestObject =
+ window.XMLHttpRequest ? new XMLHttpRequest() :
+ window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") :
+ false;
+
+ if(XMLHttpRequestObject)
+ {
+ XMLHttpRequestObject.open("GET", url);
+ XMLHttpRequestObject.onreadystatechange = function()
+ {
+ // Check for XMLHttpRequestObject.status == 200, it returns 0?
+ if (XMLHttpRequestObject.readyState == 4 )
+ {
+
+ callback(XMLHttpRequestObject.responseXML);
+ delete XMLHttpRequestObject;
+ XMLHttpRequestObject = null;
+ }
+ }
+ XMLHttpRequestObject.send(null);
+ }
+}
+
+// Add the base url if it is relative
+
+function format_url(sUrl,sBaseUrl)
+{
+ if( sUrl.substring(0,7) == 'http://' )
+ {
+ return sUrl;
+ }
+ return sBaseUrl + sUrl;
+}
+
+// Options for drop down list
+
+function construct_html_select_option(sClass,sTag,sUrl,bSelected)
+{
+ return '<option ' + (bSelected ? 'selected ' : '') +
+ 'class="' + sClass + '"' + ' value="' + sUrl + '" >'
+ + sTag + '</option>\n';
+}
+
+function construct_select_option(oXmlElement,sClass,
+ sBaseUrl,sDefaultUrl,sSelected)
+{
+ return construct_html_select_option(
+ sClass,
+ oXmlElement.getAttribute('tag'),
+ oXmlElement.hasAttribute('url') ?
+ format_url(oXmlElement.getAttribute('url'),sBaseUrl) :
+ sDefaultUrl,
+ sSelected == oXmlElement.getAttribute('tag')
+ );
+}
+
+function construct_multiple_select_options(oXmlElements,sClass,
+ sBaseUrl,sDefaultUrl,sSelected)
+{
+ var sOptionsHtml;
+ for(var i = 0; i < oXmlElements.length; i++)
+ {
+ sOptionsHtml += construct_select_option(
+ oXmlElements[i], sClass, sBaseUrl,sDefaultUrl,sSelected
+ );
+ }
+ return sOptionsHtml;
+}
+
+// Populate a select block from an xml and insert the result in sId div
+
+function select_box(sXmlUrl,sId,sBaseUrl,sSelected)
+{
+ asinc_load_xml(sXmlUrl, function(oXml) {
+
+ // manage parameters
+
+ if( sBaseUrl != '' && sBaseUrl.charAt( sBaseUrl.length-1 ) != '/' )
+ {
+ sBaseUrl += '/';
+ }
+ var sDefaultUrl = sBaseUrl + 'index';
+ var oTitles = oXml.getElementsByTagName('title');
+ if( sSelected == null && oTitles.length > 0 )
+ {
+ sSelected = oTitles[0].getAttribute('tag');
+ if( oTitles[0].hasAttribute('url') )
+ {
+ sDefaultUrl = oTitles[0].getAttribute('url');
+ }
+ }
+
+ // Construct the select box
+
+ var sSelectHtml =
+ '<select id="'+sId+'_internal"' +
+ ' class="grouped_links"' +
+ ' size="1"' +
+ ' OnChange="grouped_links_internal_go_to_url(\''+sId+'_internal\')">\n' ;
+
+ sSelectHtml += construct_multiple_select_options(
+ oTitles,
+ 'grouped_links_title', sBaseUrl, sDefaultUrl, sSelected
+ );
+
+ var aGroups = oXml.getElementsByTagName('group');
+ for(var ig = 0; ig < aGroups.length; ig++)
+ {
+ sSelectHtml += construct_select_option(
+ aGroups[ig],
+ 'grouped_links_group', sBaseUrl, sDefaultUrl, sSelected
+ );
+
+ sSelectHtml += construct_multiple_select_options(
+ aGroups[ig].getElementsByTagName('item'),
+ 'grouped_links_item', sBaseUrl, sDefaultUrl, sSelected
+ );
+ }
+
+ sSelectHtml += '</select>\n';
+ document.getElementById(sId).innerHTML = sSelectHtml;
+
+ } );
+}
+
+// Action function used when the user selects an option from the drop down list
+
+function go_to_url(sId)
+{
+ var formindex = document.getElementById(sId).selectedIndex;
+ parent.self.location = document.getElementById(sId).options[formindex].value;
+}
+
+// Api public interface
+
+window["grouped_links_select_box"] = select_box ;
+window["grouped_links_internal_go_to_url" ] = go_to_url ;
+
+})();
+

Added: sandbox/doc_test/doc/xhtml/images/DangerGeneral.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/DangerGeneral.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg height="144.407" id="svg1609" inkscape:version="0.40" sodipodi:docbase="/mnt/donnees/09-Mes_images/Travaux/Travaux vectoriel/pictogrammes/sécu SVG/Avertissement" sodipodi:docname="DangerGeneral.svg" sodipodi:version="0.32" width="156.262" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work rdf:about="">
+ <dc:title>advertising</dc:title>
+ <dc:description></dc:description>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li></rdf:li>
+ <rdf:li>caution</rdf:li>
+ <rdf:li>security</rdf:li>
+ <rdf:li>warning</rdf:li>
+ <rdf:li>signs_and_symbols</rdf:li>
+ <rdf:li>sign</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>yves GUILLOU</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>yves GUILLOU</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>yves GUILLOU</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date></dc:date>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="svg1609" inkscape:cx="52.528651" inkscape:cy="59.396977" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="929" inkscape:window-width="1291" inkscape:window-x="140" inkscape:window-y="75" inkscape:zoom="4.9119411" pagecolor="#ffffff"/>
+ <defs id="defs1610">
+ <marker id="ArrowEnd" markerHeight="3" markerUnits="strokeWidth" markerWidth="4" orient="auto" refX="0" refY="5" viewBox="0 0 10 10">
+ <path d="M 0 0 L 10 5 L 0 10 z" id="path1612"/>
+ </marker>
+ <marker id="ArrowStart" markerHeight="3" markerUnits="strokeWidth" markerWidth="4" orient="auto" refX="10" refY="5" viewBox="0 0 10 10">
+ <path d="M 10 0 L 0 5 L 10 10 z" id="path1614"/>
+ </marker>
+ </defs>
+ <g id="g1615">
+ <path d="M 12.473000,121.08200 C 11.559033,122.84329 10.481800,124.49000 10.481700,126.42300 L 10.490728,127.23088 C 10.490728,131.40288 13.756600,133.92500 17.511300,133.92500 L 138.83100,133.92500 C 142.58600,133.92500 145.81986,130.79848 145.81986,126.62648 L 145.78000,125.81500 C 145.78000,123.88200 144.82971,122.20348 143.78900,120.47400 L 83.705600,12.693800 C 81.051000,9.7442300 76.747300,9.7442300 74.092300,12.694200 L 12.473000,121.08200 z " id="path1616" sodipodi:nodetypes="ccccccccccc" style="stroke:#000000; stroke-width:2; fill:#ffffff"/>
+ <path d="M 78.703 16.2915L 15.2797 128.128L 76.4667 128.128L 79.3188 128.128L 139.826 128.128L 79.5155 16.2915L 78.703 16.2915z" id="path1617" style="stroke:#000000; stroke-width:4.8516000000000004; stroke-linejoin:round; stroke-linecap:round; fill:#ffcc00"/>
+ </g>
+ <g id="g1618">
+ <path d="M 84.366054,45.157900 C 85.289904,46.139400 85.469800,46.370250 85.931700,48.160100 C 86.393600,49.949950 87.405817,53.469087 86.291592,57.462546 C 85.829592,64.390946 86.129850,70.967972 85.856575,77.979383 C 85.583663,84.981490 87.317400,93.426000 79.234100,95.042600 C 77.155600,95.273600 75.077100,93.887900 74.268800,91.924800 C 72.883100,77.837000 71.497500,64.442000 70.111700,50.700600 C 71.266400,47.120900 74.153200,43.656700 77.617500,43.194800 C 81.081800,42.732900 83.442204,44.176400 84.366054,45.157900 z " id="path1619" sodipodi:nodetypes="czczccczz" style="stroke:none; fill:#000000"/>
+ <path d="M 83.1603 103.357C 86.3936 105.32 86.9709 108.9 86.9709 112.479C 85.5852 115.944 84.0841 119.985 79.5806 119.985C 76.8092 119.87 74.1533 119.292 72.3057 117.214C 71.151 113.057 68.4951 108.784 72.3057 105.32C 75.1926 101.278 79.2341 102.318 83.1603 103.357z" id="path1620" style="stroke:none; fill:#000000"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/callouts/1.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/10.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/11.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/12.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/13.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/14.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/15.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/2.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/3.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/4.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/5.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/6.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/7.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/8.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/callouts/9.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/caution.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/caution.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/caution.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --><svg height="120.648" id="Layer_1" inkscape:version="0.42" sodipodi:docbase="F:\openclip\svg da inviare" sodipodi:docname="Attenzione.svg" sodipodi:version="0.32" space="preserve" style="overflow:visible;enable-background:new 0 0 133.878 120.648;" version="1.1" viewBox="0 0 133.878 120.648" width="133.878" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg">
+ <metadata>
+ <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work rdf:about="">
+ <dc:title>Attenzione</dc:title>
+ <dc:description></dc:description>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>pulsante</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org/">
+ <dc:title>Open Clip Art Library</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Architetto Francesco Rollandin</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Architetto Francesco Rollandin</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date></dc:date>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs id="defs43"/>
+ <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="Layer_1" inkscape:cx="66.939003" inkscape:cy="60.324001" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="510" inkscape:window-width="787" inkscape:window-x="44" inkscape:window-y="58" inkscape:zoom="2.9838869" pagecolor="#ffffff"/>
+ <g id="g3">
+ <linearGradient gradientTransform="matrix(56.9977 90.4964 90.4964 -56.9977 -27343.9609 47971.0547)" gradientUnits="userSpaceOnUse" id="XMLID_4_" x1="-244.5732" x2="-242.8169" y1="455.4199" y2="455.4199">
+ <stop id="stop6" offset="0" style="stop-color:#FFFA5F"/>
+ <stop id="stop8" offset="1" style="stop-color:#9F3300"/>
+ </linearGradient>
+ <path d="M51.333,8.834C34.985,37.343,18.638,65.854,2.289,94.363 c-7.081,12.352,3.352,26.285,16.453,26.285c6.708,0,13.418,0,20.128,0c22.109,0,44.217,0,66.327,0c3.644,0,7.286,0,10.931,0 c13.293,0,20.963-14.273,16.452-26.031c-4.114-10.729-11.861-20.99-17.542-30.922c-8.81-15.403-17.618-30.809-26.429-46.212 c-1.813-3.167-3.622-6.333-5.434-9.5C76.601-3.516,57.616-2.03,51.333,8.834 M53.973,9.064" id="path10" style="fill:url(#XMLID_4_);"/>
+ <path d="M55.474,12.388c-8.247,14.279-16.492,28.559-24.739,42.839 c-5.526,9.567-11.05,19.137-16.577,28.707c-2.732,4.73-7.323,10.456-8.284,16c-3.799,21.9,34.927,15.743,46.734,15.743 c20.073,0,40.144,0,60.215,0c13.716,0,18.636-11.963,12.229-23.063c-6.462-11.195-12.927-22.388-19.389-33.582 c-7.249-12.557-14.499-25.113-21.75-37.671c-1.682-2.916-3.364-5.829-5.049-8.745C73.767,3.785,60.676,3.364,55.474,12.388" id="path12" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFF200;"/>
+ <path d="M55.474,12.388c-8.247,14.279-16.492,28.559-24.739,42.839c-5.526,9.567-11.05,19.137-16.577,28.707 c-2.732,4.73-7.323,10.456-8.284,16c-3.799,21.9,34.927,15.743,46.734,15.743c20.073,0,40.144,0,60.215,0 c13.716,0,18.636-11.963,12.229-23.063c-6.462-11.195-12.927-22.388-19.389-33.582c-7.249-12.557-14.499-25.113-21.75-37.671 c-1.682-2.916-3.364-5.829-5.049-8.745C73.767,3.785,60.676,3.364,55.474,12.388" id="path14" style="fill:#FFCE00;"/>
+ <path d="M126.731,95.522c-8.733-15.127-17.468-30.253-26.201-45.379 c-5.537-9.595-11.078-19.188-16.616-28.781c-3.938-6.821-7.459-15.689-16.813-15.689c1.013,0,5.901,10.225,6.469,11.196 c5.451,9.314,10.902,18.63,16.352,27.947c9.217,15.749,18.433,31.498,27.646,47.249c2.302,3.933,5.356,10.555,1.308,14.397 c-3.148,2.987-7.99,3.196-12.099,3.196c-7.225,0-14.448,0-21.674,0c-22.125,0-44.251,0-66.377,0c-3.598,0-7.197,0-10.794,0 c5.285,7.909,16.341,6.02,24.546,6.02c13.009,0,26.017,0,39.023,0c11.979,0,23.958,0,35.937,0c2.516,0,5.032,0,7.547,0 C125.136,115.678,131.878,104.435,126.731,95.522" id="path16" style="fill:#FFB600;"/>
+ <path d="M14.615,112.457c-4.483-7.751,1.908-16.103,5.793-22.834 c4.698-8.138,9.398-16.276,14.097-24.414C44.54,47.83,54.574,30.448,64.61,13.069c0.789-1.367,3.725-4.568,2.594-5.539 c-3.913-3.353-10.287,1.936-12.107,5.087c-3.129,5.417-6.258,10.835-9.386,16.252c-11.105,19.226-22.209,38.453-33.313,57.68 c-1.649,2.854-3.299,5.713-4.95,8.569c-4.771,8.265-0.075,19.162,9.658,20.446C16.124,114.65,15.294,113.615,14.615,112.457" id="path18" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFE600;"/>
+ <path d="M77.076,34.654c0,10.183-1.788,20.758-3.439,30.772 c-0.369,2.239-4.03,23.609-7.796,14.179c-4.247-10.632-4.832-23.419-5.958-34.696c-0.363-3.638-1.538-8.425-0.563-12.06 C61.667,24.099,77.076,25.199,77.076,34.654" id="path20" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFE1;"/>
+ <path d="M77.076,34.654c-2.018,0.995-1.521,8.717-1.797,11.395c-0.685,6.643-1.505,13.282-2.614,19.869 c-0.79,4.701-1.301,10.862-3.954,14.981c-1.642,2.567-3.405-5.958-3.634-6.932c-2.948-12.443-4.464-25.664-5.09-38.43 c-0.272-5.52,5.164-8.854,10.277-7.622c3.87,0.933,5.217,7.36,7.688,6.738c0.009-11.451-19.755-11.453-19.746,0 c0.017,11.956,2.087,24.599,4.423,36.294c0.501,2.507,1.642,12.376,5.449,12.376c4.059-0.021,5.285-11.432,5.79-14.137 c1.261-6.765,2.139-13.605,2.887-20.444C77.084,45.722,79.281,35.942,77.076,34.654" id="path22" style="fill:#FFFFFF;"/>
+ <linearGradient gradientTransform="matrix(68.2284 33.0019 33.0019 -68.2284 1613.9791 39385.6641)" gradientUnits="userSpaceOnUse" id="XMLID_5_" x1="-246.981" x2="-245.2275" y1="458.29" y2="458.29">
+ <stop id="stop25" offset="0" style="stop-color:#FFFA5F"/>
+ <stop id="stop27" offset="1" style="stop-color:#9F3300"/>
+ </linearGradient>
+ <path d="M57.957,34.654c0,10.053,1.632,20.54,3.242,30.431 c0.479,2.936,4.912,26.502,9.99,15.164c4.987-11.134,5.351-25.201,6.386-37.184c0.273-3.169,1.153-7.045,0.421-10.221 C75.628,22.587,57.957,23.788,57.957,34.654 M60.207,34.654c0-8.061,13.138-9.015,15.459-1.792c1.156,3.597-0.13,8.748-0.508,12.38 c-1.135,10.904-2.052,22.602-5.501,33.069c-2.816,8.545-5.546-10.187-5.934-12.522C62.039,55.63,60.207,44.985,60.207,34.654" id="path29" style="fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_5_);"/>
+ <path d="M77.076,96.788c0,11.964-18.555,11.964-18.555,0 C58.521,84.822,77.076,84.822,77.076,96.788" id="path31" style="fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFE1;"/>
+ <path d="M77.076,96.788c-2.605,1.661-2.157,6.757-7.044,8.101c-6.178,1.7-12.033-4.159-10.336-10.335 c1.439-5.23,7.657-7.767,12.341-5.021c2.91,1.704,3.164,7.913,5.915,7.256c0-14.267-22.698-12.238-20.143,1.826 c0.987,5.444,6.375,9.15,11.814,8.162C72.417,106.271,81.44,98.19,77.076,96.788" id="path33" style="fill:#FFFFFF;"/>
+ <linearGradient gradientTransform="matrix(68.2241 32.9998 32.9998 -68.2241 1604.682 39402.625)" gradientUnits="userSpaceOnUse" id="XMLID_6_" x1="-246.998" x2="-245.2348" y1="458.0625" y2="458.0625">
+ <stop id="stop36" offset="0" style="stop-color:#FFFA5F"/>
+ <stop id="stop38" offset="1" style="stop-color:#9F3300"/>
+ </linearGradient>
+ <path d="M57.395,96.788c0,13.41,20.805,13.41,20.805,0 C78.2,83.376,57.395,83.375,57.395,96.788 M59.647,96.788c0-10.514,16.301-10.514,16.301,0 C75.948,107.3,59.647,107.3,59.647,96.788" id="path40" style="fill-rule:evenodd;clip-rule:evenodd;fill:url(#XMLID_6_);"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/footer-bg-left.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/footer-bg-right.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/footer-bg.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/header-fg.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/home.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/home.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/home.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill-rule:nonzero;clip-rule:nonzero;fill:#FFFFFF;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st1 "fill:none;stroke:none;">
+ <!ENTITY st2 "fill:#000000;">
+ <!ENTITY st3 "fill:none;stroke:#FFFFFF;stroke-width:6.3469;stroke-linejoin:round;">
+ <!ENTITY st4 "fill-rule:evenodd;clip-rule:evenodd;stroke:none;">
+ <!ENTITY st5 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st0;">
+ <g style="&st4;">
+ <path style="&st3;" d="M22.9,7.1L5.1,21.8l0,0c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.2,0,0.4,0.1,0.6c0.3,0.6,0.9,1,1.6,1c0,0,1.1,0,2.2,0c0,2.4,0,14.2,0,14.2c0,1.1,0.8,1.9,1.8,1.9h27.4c1.1,0,1.9-0.9,1.9-2c0,0,0-11.8,0-14.2c1,0,2,0,2,0c0.8,0,1.4-0.5,1.7-1.2
+ c0.1-0.2,0.1-0.4,0.1-0.6c0-0.5-0.2-1-0.7-1.4c0,0-3.6-3-4.5-3.7c0-1.2,0-6.9,0-6.9c0-1.2-0.8-2-2-2h-4.8c-1,0-1.7,0.6-1.9,1.5c-1.9-1.6-4.1-3.5-4.1-3.5l0.1,0.1c-0.7-0.7-1.8-0.8-2.7-0.1z"/>
+ <path style="&st2;" d="M22.9,7.1L5.1,21.8l0,0c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.2,0,0.4,0.1,0.6c0.3,0.6,0.9,1,1.6,1c0,0,1.1,0,2.2,0c0,2.4,0,14.2,0,14.2c0,1.1,0.8,1.9,1.8,1.9h27.4c1.1,0,1.9-0.9,1.9-2c0,0,0-11.8,0-14.2c1,0,2,0,2,0c0.8,0,1.4-0.5,1.7-1.2
+ c0.1-0.2,0.1-0.4,0.1-0.6c0-0.5-0.2-1-0.7-1.4c0,0-3.6-3-4.5-3.7c0-1.2,0-6.9,0-6.9c0-1.2-0.8-2-2-2h-4.8c-1,0-1.7,0.6-1.9,1.5c-1.9-1.6-4.1-3.5-4.1-3.5l0.1,0.1c-0.7-0.7-1.8-0.8-2.7-0.1z"/>
+ <path style="&st2;" d="M41.8,22.8l-5.1-4.2v-0.1L31,13.7v0l-6.5-5.5C24.2,8,24,8,23.8,8.2L6.2,22.9c-0.1,0.1-0.1,0.3,0.1,0.3h1.6H10h28.1h1.2h2.3c0.2,0,0.4-0.2,0.2-0.4z"/>
+ <path d="M35.8,16.8l0-5.1c0-0.2-0.1-0.4-0.3-0.4h-3.2c-0.2,0-0.3,0.1-0.3,0.3v2.2l3.9,2.9z"/>
+ <path d="M11.9,24.7V37c0,0.3,0.1,0.4,0.3,0.4h23.6c0.3,0,0.4-0.2,0.4-0.4V24.7H11.9z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st5;">
+ <path style="&st1;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/important.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/important.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/important.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg height="164.675" id="svg1" inkscape:version="0.40" sodipodi:docbase="/mnt/donnees/09-Mes_images/Travaux/Travaux vectoriel/pictogrammes/sécu SVG/Obligation" sodipodi:docname="ObligationGenerale.svg" sodipodi:version="0.32" width="164.675" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work rdf:about="">
+ <dc:title>obligation generale</dc:title>
+ <dc:description>obligation</dc:description>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li></rdf:li>
+ <rdf:li>symbol</rdf:li>
+ <rdf:li>signs_and_symbols</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>yves GUILLOU</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>yves GUILLOU</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>yves GUILLOU</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date></dc:date>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="svg1" inkscape:cx="65.870001" inkscape:cy="65.870001" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="1121" inkscape:window-width="1590" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="7.1580384" pagecolor="#ffffff"/>
+ <defs id="defs2">
+ <marker id="ArrowEnd" markerHeight="3" markerUnits="strokeWidth" markerWidth="4" orient="auto" refX="0" refY="5" viewBox="0 0 10 10">
+ <path d="M 0 0 L 10 5 L 0 10 z" id="path4"/>
+ </marker>
+ <marker id="ArrowStart" markerHeight="3" markerUnits="strokeWidth" markerWidth="4" orient="auto" refX="10" refY="5" viewBox="0 0 10 10">
+ <path d="M 10 0 L 0 5 L 10 10 z" id="path6"/>
+ </marker>
+ </defs>
+ <g id="g7">
+ <path d="M 84.4626 153.222C 123.584 152.076 154.369 119.431 153.222 80.3101C 152.076 41.1891 119.431 10.4038 80.3103 11.5504C 41.1893 12.697 10.4039 45.3414 11.5506 84.4624C 12.6972 123.583 45.3416 154.369 84.4626 153.222z" id="path8" style="stroke:none; fill:#000000"/>
+ <path d="M 84.2891 148.923C 121.063 147.846 150.001 117.16 148.923 80.386C 147.846 43.6122 117.16 14.6739 80.386 15.7517C 43.6121 16.8296 14.6738 47.5154 15.7517 84.2892C 16.8295 121.063 47.5153 150.001 84.2891 148.923z" id="path9" style="stroke:#ffffff; stroke-width:3; fill:#004cff"/>
+ </g>
+ <g id="g10">
+ <path d="M 89.015700,45.666000 C 92.055110,48.505337 90.231233,54.092473 90.213900,58.112000 C 90.163333,69.838073 89.215334,80.885119 88.292000,92.639500 C 88.169834,94.194719 86.657336,95.784094 84.960200,96.489100 C 82.276836,97.603794 79.808374,96.430699 77.656600,95.311300 C 75.745874,94.317299 75.082868,89.703543 74.770213,87.742398 C 72.886368,75.925843 74.252252,67.348435 71.666400,55.338700 C 70.936152,51.947135 71.101959,47.839437 73.134400,45.106700 C 75.671859,41.694937 81.863303,38.984418 84.930700,41.849900 L 89.015700,45.666000 z " id="path11" sodipodi:nodetypes="csssssssss" style="stroke:none; fill:#ffffff"/>
+ <path d="M 91.822000,108.22600 C 93.819224,112.18961 92.734473,116.09174 90.525700,119.44800 C 88.577873,122.40774 84.442649,122.95041 80.824000,122.55400 C 77.267549,122.16441 74.540979,118.72380 73.424100,115.86900 C 72.328579,113.06880 72.533425,110.22337 73.732000,107.62500 C 75.308025,104.20837 79.804902,101.92947 84.194800,102.56000 C 87.707002,103.06447 90.309124,105.22361 91.822000,108.22600 z " id="path12" sodipodi:nodetypes="cssssss" style="stroke:none; fill:#ffffff"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/next.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/next.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/next.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:none;stroke:none;">
+ <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;">
+ <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st3 "stroke:none;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st2;">
+ <g>
+ <path style="&st1;" d="M22.4,41.1c0,0.3,0.3,0.3,0.5,0.2l16.6-16.9c0.5-0.5,0.4-0.7,0-1L22.9,6.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.9c-0.3,0-0.5,0.2-0.5,0.4l0,13.3C8.4,30.9,8.6,31,9,31h13.5l-0.1,10.1z"/>
+ <path style="&st3;" d="M22.4,41.1c0,0.3,0.3,0.3,0.5,0.2l16.6-16.9c0.5-0.5,0.4-0.7,0-1L22.9,6.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.9c-0.3,0-0.5,0.2-0.5,0.4l0,13.3C8.4,30.9,8.6,31,9,31h13.5l-0.1,10.1z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st2;">
+ <path style="&st0;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/note.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/note.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/note.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") --><svg height="400pt" id="svg548" inkscape:version="0.38.1" sodipodi:docbase="/var/www/html/svg_gallery/svg/office" sodipodi:docname="note.svg" sodipodi:version="0.32" width="400pt" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work rdf:about="">
+ <dc:title>Clipart by Nicu Buculei - book_01</dc:title>
+ <dc:description></dc:description>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>office</rdf:li>
+ <rdf:li></rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>Nicu Buculei</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Nicu Buculei</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Nicu Buculei</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date></dc:date>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs id="defs550">
+ <linearGradient id="linearGradient562">
+ <stop id="stop563" offset="0.000000" style="stop-color:#de9500;stop-opacity:1;"/>
+ <stop id="stop564" offset="1.000000" style="stop-color:#ffff0f;stop-opacity:1;"/>
+ </linearGradient>
+ <linearGradient id="linearGradient558">
+ <stop id="stop559" offset="0" style="stop-color:#000;stop-opacity:1;"/>
+ <stop id="stop560" offset="1" style="stop-color:#fff;stop-opacity:1;"/>
+ </linearGradient>
+ <linearGradient gradientUnits="objectBoundingBox" id="linearGradient561" spreadMethod="reflect" x1="0.61486840" x2="0.25000009" xlink:href="#linearGradient562" y1="0.53906602" y2="0.32031256"/>
+ </defs>
+ <sodipodi:namedview id="base" inkscape:cx="200.00000" inkscape:cy="200.00000" inkscape:window-height="636" inkscape:window-width="787" inkscape:window-x="0" inkscape:window-y="24" inkscape:zoom="0.90750000"/>
+ <g id="g855">
+ <path d="M 98.359 20.9239 C 86.7178 169.989 133.621 233.611 96.6631 472.866 C 96.6631 472.866 429.897 476.258 429.049 476.258 C 472.505 226.258 403.845 144.925 431.706 79.4305 C 377.908 78.6961 364.607 20.076 364.607 20.076 L 98.359 20.9239 z " id="path588" sodipodi:nodetypes="cccccc" style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:10.000000;stroke-linejoin:round;stroke-dasharray:none;" transform="translate(-31.64557,-9.493675)"/>
+ <path d="M 369.695 22.6197 L 368.846 81.9743 L 437.527 81.9743 C 440.919 76.8867 373.086 24.3156 369.695 22.6197 z " id="path589" sodipodi:nodetypes="cccc" style="fill:#eeebff;fill-rule:evenodd;stroke:#000000;stroke-width:10.000000;stroke-linejoin:round;stroke-dasharray:none;" transform="translate(-36.73307,-11.18950)"/>
+ <path d="M 99.8788 380.676 L 76.014 482.322 L 175.741 411.612 C 175.741 411.612 167.054 351.508 99.8788 380.676 z " id="path554" sodipodi:nodetypes="cccc" style="fill:#cca89d;fill-rule:evenodd;stroke:#000000;stroke-width:13.698779;stroke-linejoin:round;stroke-dasharray:none;" transform="matrix(0.741180,0.000000,0.000000,0.718973,165.0147,93.07255)"/>
+ <path d="M 100.763 380.676 L 325.269 62.4776 C 325.269 62.4776 346.482 35.9611 370.347 50.9871 C 377.419 52.7549 375.651 50.9872 389.793 61.5937 C 393.328 64.2454 395.096 85.4586 395.096 85.4586 C 395.096 85.4586 174.125 411.612 174.125 412.496 C 174.125 413.379 170.589 393.05 151.144 382.443 C 133.466 371.837 101.647 381.56 100.763 380.676 z " id="path553" sodipodi:nodetypes="cccccccc" style="fill:#c96400;fill-rule:evenodd;stroke:#000000;stroke-width:13.698779;stroke-linejoin:round;stroke-dasharray:none;" transform="matrix(0.741180,0.000000,0.000000,0.718973,165.0147,93.07255)"/>
+ <path d="M 75.1301 483.206 L 83.0851 451.386 C 83.0851 450.502 93.6917 450.502 97.2272 454.922 C 100.763 455.806 101.647 462.877 101.647 462.877 L 75.1301 483.206 z " id="path555" sodipodi:nodetypes="ccccc" style="fill-rule:evenodd;stroke:#000000;stroke-width:17.123474;stroke-linejoin:round;" transform="matrix(0.741180,0.000000,0.000000,0.718973,165.0147,93.07255)"/>
+ <path d="M 315.547 74.852 L 358.857 22.7029 C 358.857 22.7029 377.418 3.25745 395.98 12.9802 C 414.541 22.7029 405.702 17.3995 414.542 23.5867 C 422.496 35.9612 411.89 58.9421 411.006 58.9421 C 410.122 58.9421 374.767 117.279 374.767 117.279 C 374.767 117.279 383.605 106.672 368.579 98.7169 C 351.786 76.6198 314.663 74.852 315.547 74.852 z " id="path556" sodipodi:nodetypes="cccccccc" style="fill:#fc64e3;fill-rule:evenodd;stroke:#000000;stroke-width:13.698779;stroke-linejoin:round;stroke-dasharray:none;" transform="matrix(0.741180,0.000000,0.000000,0.718973,165.0147,93.07255)"/>
+ <path d="M 305.824 87.2263 C 304.94 87.2263 342.063 39.4967 342.063 39.4967 C 342.063 39.4967 357.089 37.7288 370.347 41.2644 C 385.374 47.4516 379.186 43.0322 389.793 50.9872 C 399.515 58.9421 401.283 77.5037 401.283 77.5037 L 372.999 121.698 C 372.999 121.698 373.883 112.859 365.044 103.137 C 350.902 91.6457 336.759 89.878 327.921 86.3424 C 315.546 84.5747 304.94 88.1102 305.824 87.2263 z " id="path557" sodipodi:nodetypes="ccccccccc" style="fill:url(#linearGradient561);fill-rule:evenodd;stroke:#000000;stroke-width:13.698779;stroke-linejoin:round;stroke-dasharray:none;" transform="matrix(0.741180,0.000000,0.000000,0.718973,165.0147,93.07255)"/>
+ <path d="M 76.875 480.625 C 76.875 479.375 83.75 453.125 85.625 453.125 C 87.5 453.125 93.75 454.375 93.75 456.25 C 83.125 462.5 78.75 478.75 76.875 480.625 z " id="path566" sodipodi:nodetypes="cccc" style="fill:#ffffff;fill-rule:evenodd;stroke-width:17.123474;stroke-linejoin:round;" transform="matrix(0.741180,0.000000,0.000000,0.718973,165.0147,93.07255)"/>
+ <path d="M 122.22741,365.36859 C 136.64241,342.47459 307.27280,103.20431 312.36080,99.812611 C 383.58580,70.135311 172.25641,294.14259 122.22741,365.36859 z " id="path564" sodipodi:nodetypes="ccc" style="fill:#ffffff;fill-opacity:0.50370401;fill-rule:evenodd;stroke-width:17.123474;stroke-linejoin:round;" transform="matrix(0.741180,0.000000,0.000000,0.718973,165.0147,93.07255)"/>
+ <path d="M 234.50707,414.15223 C 234.50707,412.32316 242.04895,380.01324 245.81904,369.64924 C 247.07608,369.64924 266.94578,366.62323 273.85876,377.59764 C 249.34942,381.25505 235.76404,409.27544 234.50707,414.15223 z " id="path565" sodipodi:nodetypes="cccc" style="fill:#ffffff;fill-opacity:0.50196099;fill-rule:evenodd;stroke-width:17.123474;stroke-linejoin:round;"/>
+ <path d="M 394.284 17.5322 C 394.284 17.5322 413.786 21.7719 413.786 27.7073 C 418.873 44.6657 409.546 53.9928 403.611 64.1679 C 405.307 48.0574 408.699 40.4262 394.284 17.5322 z " id="path567" sodipodi:nodetypes="cccc" style="fill-opacity:0.24999996;fill-rule:evenodd;stroke-width:17.123474;stroke-linejoin:round;" transform="matrix(0.741180,0.000000,0.000000,0.718973,165.0147,93.07255)"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/prev.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/prev.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/prev.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:none;stroke:none;">
+ <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;">
+ <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st3 "stroke:none;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st2;">
+ <g>
+ <path style="&st1;" d="M25.6,6.9c0-0.3-0.3-0.3-0.5-0.2L8.4,23.6c-0.5,0.5-0.4,0.7,0,1l16.6,16.6c0.1,0.1,0.4,0.1,0.4-0.1v-10h13.6c0.3,0,0.5-0.2,0.5-0.4l0-13.3c0-0.3-0.2-0.5-0.5-0.5H25.5l0.1-10.1z"/>
+ <path style="&st3;" d="M25.6,6.9c0-0.3-0.3-0.3-0.5-0.2L8.4,23.6c-0.5,0.5-0.4,0.7,0,1l16.6,16.6c0.1,0.1,0.4,0.1,0.4-0.1v-10h13.6c0.3,0,0.5-0.2,0.5-0.4l0-13.3c0-0.3-0.2-0.5-0.5-0.5H25.5l0.1-10.1z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st2;">
+ <path style="&st0;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/space.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/tip.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/tip.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/tip.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="428.00000pt" id="svg1" inkscape:version="0.40" sodipodi:docbase="/home/bpcomp/Inkscape" sodipodi:docname="lightbulb-brightlit.svg" sodipodi:version="0.32" width="380.00000pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work rdf:about="">
+ <dc:title>lightbulb-brightlit</dc:title>
+ <dc:description></dc:description>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>symbol</rdf:li>
+ <rdf:li>lightbulb</rdf:li>
+ <rdf:li>work</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>Open Clip Art Library</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Benji Park</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Benji Park</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date></dc:date>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs id="defs3">
+ <linearGradient id="linearGradient3057">
+ <stop id="stop3058" offset="0.0000000" style="stop-color:#f2ff00;stop-opacity:1.0000000;"/>
+ <stop id="stop3059" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:0.0000000;"/>
+ </linearGradient>
+ <linearGradient id="linearGradient1703">
+ <stop id="stop1704" offset="0.0000000" style="stop-color:#f2ff00;stop-opacity:1.0000000;"/>
+ <stop id="stop1705" offset="1.0000000" style="stop-color:#ffffb8;stop-opacity:1.0000000;"/>
+ </linearGradient>
+ <linearGradient gradientTransform="matrix(0.818515,0.000000,0.000000,1.221725,-246.1659,-76.29705)" gradientUnits="userSpaceOnUse" id="linearGradient2430" inkscape:collect="always" x1="543.07941" x2="357.71490" xlink:href="#linearGradient1703" y1="277.83859" y2="180.22783"/>
+ <radialGradient cx="98.885597" cy="152.66882" fx="100.51762" fy="150.96530" gradientTransform="scale(1.020231,0.980171)" gradientUnits="userSpaceOnUse" id="radialGradient3056" inkscape:collect="always" r="194.24075" xlink:href="#linearGradient3057"/>
+ <radialGradient cx="98.885597" cy="152.66882" fx="100.51762" fy="150.96530" gradientTransform="scale(1.020231,0.980171)" gradientUnits="userSpaceOnUse" id="radialGradient3073" inkscape:collect="always" r="194.24075" xlink:href="#linearGradient3057"/>
+ <linearGradient gradientTransform="matrix(0.818515,0.000000,0.000000,1.221725,-246.1659,-76.29705)" gradientUnits="userSpaceOnUse" id="linearGradient3074" inkscape:collect="always" x1="543.07941" x2="357.71490" xlink:href="#linearGradient1703" y1="277.83859" y2="180.22783"/>
+ </defs>
+ <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="333.48733" inkscape:cy="118.41605" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="914" inkscape:window-width="1276" inkscape:window-x="0" inkscape:window-y="46" inkscape:zoom="0.86828472" pagecolor="#ffffff" showguides="true"/>
+ <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1">
+ <g id="g3061" transform="translate(129.5658,135.3243)">
+ <path d="M 333.99184 137.11841 A 233.93825 224.58072 0 1 1 -133.88466,137.11841 A 233.93825 224.58072 0 1 1 333.99184 137.11841 z" id="path2431" sodipodi:cx="100.05359" sodipodi:cy="137.11841" sodipodi:rx="233.93825" sodipodi:ry="224.58072" sodipodi:type="arc" style="opacity:0.99130440;fill:url(#radialGradient3073);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:8.7500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000" transform="translate(7.198100,-44.62822)"/>
+ <g id="g2420" transform="translate(-15.83582,-7.198100)">
+ <g id="g1712" transform="translate(-252.2735,-133.3010)">
+ <path d="M 405.13516,449.07049 L 332.86230,474.51868" id="path1708" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:8.7500000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+ <path d="M 405.13516,468.75038 L 332.86230,494.19857" id="path1709" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:8.7500000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+ <path d="M 405.13516,488.43032 L 332.86230,513.87851" id="path1710" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:8.7500000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+ <path d="M 405.13516,429.39053 L 332.86230,454.83872" id="path1711" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:8.7500000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+ </g>
+ <path d="M 168.42933,306.30664 C 167.70954,195.45998 192.18218,179.26486 201.53936,167.02854 C 215.98793,148.16177 227.72465,102.07890 202.25915,61.940163 C 169.44684,9.9473741 96.792916,-4.8317329 45.346356,51.863193 C 13.431346,87.367343 23.167706,138.23428 41.027646,166.30876 C 45.732926,173.21034 71.258556,195.10009 71.258556,305.94675 C 71.258556,306.66653 168.42933,306.30664 168.42933,306.30664 z " id="path1691" sodipodi:nodetypes="cccccsc" style="fill:url(#linearGradient3074);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:8.7500000;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+ <path d="M 153.31388,40.346633 C 81.335536,12.275086 15.115446,83.533643 54.703546,156.95155" id="path1080" sodipodi:nodetypes="cc" style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:8.7500000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+ <path d="M 169.86890,53.302743 C 184.98435,63.379703 192.90197,79.214943 196.50089,91.451263" id="path1702" sodipodi:nodetypes="cc" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:8.7500000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+ <path d="M 101.45631,388.21198 C 101.45631,388.21198 105.51739,397.47406 116.72522,397.37333 C 126.95485,397.28139 130.97621,388.21198 130.97621,388.21198" id="path1717" sodipodi:nodetypes="ccc" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:8.7500000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+ </g>
+ </g>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/tip2.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/tip2.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="1052.3622047" id="svg2" inkscape:version="0.42.2" sodipodi:docbase="/home/sergio/tmp/downloads" sodipodi:docname="lamp.svg" sodipodi:version="0.32" width="744.09448819" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <cc:Work rdf:about="">
+ <dc:title>lamp</dc:title>
+ <dc:description></dc:description>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>office</rdf:li>
+ <rdf:li></rdf:li>
+ <rdf:li>lamp</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org/">
+ <dc:title>Open Clip Art Library</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Sergio Luiz Araujo Silva</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Public Domain</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date>set 2005</dc:date>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <defs id="defs4">
+ <linearGradient id="linearGradient13125">
+ <stop id="stop13127" offset="0.0000000" style="stop-color:#ffffff;stop-opacity:1.0000000;"/>
+ <stop id="stop13129" offset="1" style="stop-color:#fffeff;stop-opacity:0;"/>
+ </linearGradient>
+ <linearGradient id="linearGradient12389">
+ <stop id="stop12391" offset="0.0000000" style="stop-color:#fefefe;stop-opacity:1.0000000;"/>
+ <stop id="stop12393" offset="1.0000000" style="stop-color:#fffefe;stop-opacity:1.0000000;"/>
+ </linearGradient>
+ <radialGradient cx="358.25909" cy="186.06468" fx="358.25909" fy="186.06468" gradientTransform="matrix(1.000001,-8.244061e-7,3.143917e-7,0.381356,-4.028738e-4,115.1081)" gradientUnits="userSpaceOnUse" id="radialGradient13131" inkscape:collect="always" r="27.486719" xlink:href="#linearGradient13125"/>
+ <radialGradient cx="358.25909" cy="186.06468" fx="358.25909" fy="186.06468" gradientTransform="matrix(1.000001,-8.244061e-7,3.143917e-7,0.381356,-4.028738e-4,115.1081)" gradientUnits="userSpaceOnUse" id="radialGradient14587" inkscape:collect="always" r="27.486719" xlink:href="#linearGradient13125"/>
+ <radialGradient cx="358.25909" cy="186.06468" fx="358.25909" fy="186.06468" gradientTransform="matrix(1.000001,-8.244061e-7,3.143917e-7,0.381356,-4.028738e-4,115.1081)" gradientUnits="userSpaceOnUse" id="radialGradient15390" inkscape:collect="always" r="27.486719" xlink:href="#linearGradient13125"/>
+ <radialGradient cx="358.25909" cy="186.06468" fx="358.25909" fy="186.06468" gradientTransform="matrix(1.000001,-8.244061e-7,3.143917e-7,0.381356,-4.028738e-4,115.1081)" gradientUnits="userSpaceOnUse" id="radialGradient16141" inkscape:collect="always" r="27.486719" xlink:href="#linearGradient13125"/>
+ </defs>
+ <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="344.34505" inkscape:cy="795.78292" inkscape:document-units="px" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="693" inkscape:window-width="1024" inkscape:window-x="0" inkscape:window-y="25" inkscape:zoom="0.72123084" pagecolor="#ffffff" showguides="true"/>
+ <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1">
+ <path d="M 369.44028,121.86683 C 302.64703,119.68096 242.59223,184.30679 250.47188,250.87980 C 252.47522,280.21980 267.84094,306.49880 285.94332,328.82253 C 303.71281,358.65039 312.13900,393.24133 313.51068,427.73030 C 317.00419,446.97288 338.01608,454.57063 355.35334,455.26572 C 375.18456,456.91501 395.94281,455.09265 414.43470,447.69729 C 430.92724,435.70557 427.37713,413.20597 430.74488,395.55648 C 434.70351,361.57615 449.78002,329.76555 471.07843,303.26619 C 504.41026,252.31528 488.56419,176.76397 437.75400,143.26422 C 417.82956,129.49394 393.70573,121.69096 369.44028,121.86683 z " id="path1384" style="opacity:1.0000000;fill:#f3f2f3;fill-opacity:0.83333331;stroke:#000000;stroke-width:0.58960420;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"/>
+ <path d="M 425.72698,154.07768 C 437.68158,164.87540 453.68534,182.03604 451.17873,203.82428 C 455.99913,200.54641 460.81954,197.26853 465.63995,193.99066 C 459.85546,170.27425 448.28648,162.75442 425.72698,154.07768 z " id="path2153" sodipodi:nodetypes="cccc" style="fill:#fefefe;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 506.99897 296.94009 A 37.120701 18.718985 0 1 1 432.75756,296.94009 A 37.120701 18.718985 0 1 1 506.99897 296.94009 z" id="path2881" sodipodi:cx="469.87827" sodipodi:cy="296.94009" sodipodi:rx="37.120701" sodipodi:ry="18.718985" sodipodi:type="arc" style="opacity:1.0000000;color:#000000;fill:#fefefe;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.64700001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" transform="matrix(0.818103,0.000000,0.000000,0.896150,-13.89510,-26.68653)"/>
+ <path d="M 359.20536,314.30802 L 336.64585,244.31570 C 362.29042,230.62575 382.72895,234.28926 403.16748,243.15881 L 379.45107,315.46491 L 379.45107,315.46491" id="path3617" sodipodi:nodetypes="ccccc" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#8f9595;stroke-width:0.91160071px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 513.73605 514.32300 A 52.508934 11.885468 0 1 1 408.71818,514.32300 A 52.508934 11.885468 0 1 1 513.73605 514.32300 z" id="path4361" sodipodi:cx="461.22711" sodipodi:cy="514.32300" sodipodi:rx="52.508934" sodipodi:ry="11.885468" sodipodi:type="arc" style="opacity:1.0000000;color:#000000;fill:#a0a0a0;fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:0.64700001;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" transform="matrix(0.982435,0.000000,0.000000,1.387810,-83.52495,-281.2705)"/>
+ <path d="M 315.87677,433.07959 C 319.14672,442.90428 329.03398,448.82383 338.76816,450.68840 C 362.00206,456.37952 386.74882,455.38004 409.63484,448.57985 C 414.28840,447.19363 419.18392,445.42184 422.06530,441.25295 C 423.42527,439.84003 425.68582,434.46169 424.07088,434.30126 C 411.81432,444.17256 395.75685,447.78808 380.34111,448.56322 C 362.85475,449.05661 344.64886,448.26521 328.51659,440.79114 C 324.02706,438.71576 319.76022,436.14612 315.87677,433.07959 z " id="path4363" style="fill:#d6dee6;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 400.47436,522.16227 C 396.48542,528.09177 392.49650,534.02126 388.50756,539.95076 C 383.93367,541.47295 366.98819,546.44954 353.57745,538.01018 C 350.34318,532.29631 347.10892,526.58244 343.87465,520.86856 C 364.35835,531.64946 396.48542,523.99502 400.47436,522.16227 z " id="path5094" sodipodi:nodetypes="ccccc" style="fill:#090a0c;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.91160071px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 419.65600,444.27781 C 419.97026,446.39906 420.28452,448.52031 420.59878,450.64156 C 421.46299,450.95582 422.32720,451.27008 423.19142,451.58434 C 423.19142,452.91994 423.19142,454.25554 423.19142,455.59114 C 422.32720,455.98397 421.46299,456.37678 420.59878,456.76961 C 420.36308,459.20512 420.12739,461.64063 419.89170,464.07614 C 420.52021,464.23327 421.14873,464.39039 421.77725,464.54753 C 421.69869,466.59021 421.62012,468.63289 421.54156,470.67558 C 420.83447,471.46123 420.12739,472.24688 419.42030,473.03253 C 419.57744,474.05387 419.73456,475.07522 419.89170,476.09656 C 420.91303,477.11790 421.93438,478.13925 422.95572,479.16058 C 422.87716,480.18193 422.79859,481.20328 422.72003,482.22461 C 422.01294,483.01026 421.30586,483.79591 420.59878,484.58156 C 420.36308,485.05294 420.12739,485.52433 419.89170,485.99572 C 419.57744,486.70280 419.26317,487.40989 418.94892,488.11697 C 419.10605,489.05975 419.26317,490.00253 419.42030,490.94531 C 419.89170,491.65239 420.36308,492.35947 420.83447,493.0
6655 C 420.67734,494.71641 420.52021,496.36627 420.36308,498.01614 C 415.02067,505.24410 409.67827,512.47206 404.33587,519.70003 C 403.15740,520.24998 401.97892,520.79994 400.80045,521.34989 C 397.81498,522.29266 394.82952,523.23544 391.84406,524.17822 C 386.34452,524.80674 380.84498,525.43525 375.34545,526.06378 C 371.96717,525.90664 368.58887,525.74952 365.21059,525.59238 C 362.46082,525.51382 359.71105,525.43525 356.96128,525.35669 C 353.42587,524.49247 349.89045,523.62827 346.35503,522.76405 C 345.17656,521.82128 343.99809,520.87850 342.81962,519.93572 C 339.75559,517.81447 336.69157,515.69322 333.62754,513.57197 C 328.75652,508.30813 323.88551,503.04429 319.01448,497.78044 C 319.01448,496.52341 319.01448,495.26636 319.01448,494.00933 C 319.87870,494.00933 320.74291,494.00933 321.60712,494.00933 C 321.13574,492.83086 320.66435,491.65239 320.19296,490.47392 C 319.09305,488.19554 317.99314,485.91716 316.89323,483.63878 C 316.89323,482.93170 316.89323,482.22461 316.89323,481.51753 C 318.38597,480.26049 319.
87869,479.00345 321.37143,477.74642 C 320.03583,475.54660 318.70022,473.34679 317.36462,471.14697 C 317.28606,470.83271 317.20748,470.51845 317.12892,470.20419 C 318.46453,468.39720 319.80013,466.59021 321.13574,464.78322 C 320.74291,463.68331 320.35009,462.58341 319.95726,461.48350 C 319.09305,460.38359 318.22883,459.28369 317.36462,458.18378 C 317.12892,457.31956 316.89323,456.45536 316.65753,455.59114 C 317.75744,454.17697 318.85735,452.76281 319.95726,451.34864 C 319.87870,450.01304 319.80013,448.67744 319.72157,447.34184 C 319.32874,446.71332 318.93592,446.08480 318.54310,445.45628 C 318.62166,444.74920 318.70023,444.04212 318.77879,443.33503 C 319.48588,443.25647 320.19296,443.17790 320.90004,443.09934 C 324.04263,445.22059 327.18523,447.34184 330.32782,449.46309 C 348.08347,456.92674 391.76550,461.09068 419.65600,444.27781 z " id="path7284" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccc" style="fill:#fba246;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.911
60071px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 389.86281,523.00744 C 389.46998,521.82897 391.23336,522.26765 390.84054,521.08918 C 383.37688,521.01061 375.91323,520.93205 368.44957,520.85348 C 368.44957,520.53923 368.44957,520.22496 368.44957,519.91070 C 374.10624,519.75357 379.76290,519.59645 385.41957,519.43932 C 388.24790,518.88937 391.07623,518.33941 393.90457,517.78946 C 395.39730,517.55377 396.89003,517.31807 398.38277,517.08237 C 401.44679,515.03969 404.51082,512.99701 407.57485,510.95432 C 407.49629,510.64006 407.41771,510.32580 407.33915,510.01153 C 401.36822,510.48292 395.39730,510.95432 389.42637,511.42571 C 387.30512,511.81853 385.18387,512.21135 383.06263,512.60418 C 379.13438,512.36849 375.20615,512.13279 371.27790,511.89710 C 369.78518,511.73997 368.29244,511.58284 366.79971,511.42571 C 364.44277,510.32580 362.08582,509.22589 359.72888,508.12598 C 376.54175,507.18320 396.89003,507.18320 415.11707,493.98432 C 391.31192,502.15506 371.27790,500.19093 355.01499,497.99112 C 375.91322,494.06288 396.57577,493.19867 417.00262,478.4
2849 C 387.38368,489.42756 366.24975,485.57788 349.35832,483.84946 C 371.51360,479.29269 403.56804,478.27136 414.40998,466.64376 C 383.06263,474.89306 355.95776,473.47890 338.75207,469.47210 C 352.81517,467.58654 366.87827,465.70098 380.94137,463.81543 C 374.10624,463.18691 367.27110,462.55840 360.43596,461.92988 C 373.32059,459.73006 386.20522,457.53024 399.08985,455.33043 C 381.88416,456.19465 346.53000,460.82997 319.89653,444.48849 C 323.66763,447.63108 328.61721,449.83090 331.20985,453.91627 C 327.28161,453.44487 323.35338,452.97349 319.42513,452.50210 C 319.66083,453.83770 319.89653,455.17330 320.13222,456.50890 C 324.13902,459.02298 328.14582,461.53704 332.15263,464.05112 C 327.43875,466.25093 322.72485,468.45075 318.01096,470.65057 C 323.90332,472.53612 329.79568,474.42169 335.68805,476.30724 C 330.03138,478.66418 322.48915,476.30724 318.71804,483.37807 C 325.55318,486.59923 335.21666,487.22774 339.22346,493.04154 C 333.33110,493.51293 326.73166,489.27043 321.54639,494.45571 C 327.67444,498.06968 333.
80249,501.68367 339.93055,505.29765 C 336.55226,504.82626 333.17397,504.35487 329.79568,503.88348 C 334.58814,509.30445 341.26727,513.37780 346.05972,518.79877 C 362.00838,520.29150 373.91416,521.51471 389.86281,523.00744 z " id="path6556" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccc" style="fill:#ffc080;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 410.63580,448.38806 C 375.91016,459.46570 347.07688,453.33765 330.49970,448.38806 C 332.54238,449.09515 334.58507,449.80223 336.62775,450.50931 C 365.30391,460.56561 396.80839,453.41621 407.80747,450.27362 C 408.75025,449.64510 409.69303,449.01658 410.63580,448.38806 z " id="path7286" sodipodi:nodetypes="ccccc" style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 431.22109,368.33927 C 427.74256,388.71364 424.26401,409.08801 420.78546,429.46237 C 416.60557,437.06563 407.94091,440.30372 400.07083,442.61238 C 391.48668,445.18530 382.40444,445.05799 373.54205,444.61656 C 371.08048,446.38986 364.99205,442.92177 370.06503,441.81235 C 377.17154,440.98795 384.60188,442.10538 391.38552,439.26558 C 401.04319,435.47671 410.26670,429.97354 417.05844,422.00834 C 421.19961,403.95301 425.34070,385.89766 429.48184,367.84233 C 430.06159,368.00798 430.64135,368.17360 431.22109,368.33927 z " id="path3629" style="fill:#ffffff;fill-opacity:0.64285713;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 353.42087,428.84088 L 351.10708,419.00725 L 351.68553,378.22661 L 353.13164,373.45440 L 353.05576,339.28565 L 349.95018,336.28751 L 349.37173,316.04336 C 363.86558,304.49563 376.56238,306.21837 388.70625,316.23514 L 388.12780,336.28907 L 385.23556,339.18131 L 384.65711,373.58108 L 386.39245,378.21491 L 385.81401,427.68398 L 382.34331,429.99778 L 374.24503,428.84088 L 371.35278,425.37019 L 366.14675,425.37019 L 360.94071,429.41933 L 353.42087,428.84088 z " id="path3619" sodipodi:nodetypes="ccccccccccccccccccc" style="fill:#c1c1c1;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#9b989f;stroke-width:0.91160071px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 358.25832,325.31572 L 358.25832,416.41507" id="path5096" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.91160071px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 380.15345,325.31572 L 380.15345,416.41507" id="path5824" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.91160071px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 361.91098,325.31572 L 361.91098,416.41507" id="path5826" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#8f8f92;stroke-width:0.91160071px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 376.52161,325.31572 L 376.52161,416.41507" id="path6554" style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#8f8f92;stroke-width:0.91160071px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <g id="g9475" transform="matrix(0.911601,0.000000,0.000000,0.911601,328.5961,-156.2531)">
+ <path d="M 86.864034,673.56687 L 79.199560,676.97330 L 77.155700,678.67652 L 75.793127,679.69845 L 65.573829,679.35780 L 65.403508,678.33587 L 70.683478,676.97330 C 70.683478,676.97330 74.430554,676.63266 75.111841,676.46234 C 75.793127,676.29201 78.688595,674.92944 78.688595,674.92944 L 84.649852,671.52301 L 87.034355,671.52301 L 86.864034,673.56687 z " id="path8741" style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 91.973683,686.34099 L 88.056285,686.17067 L 85.331139,687.53324 L 81.073098,689.23646 L 77.836987,691.45064 L 75.111841,692.30225 L 70.853800,692.64289 L 69.320905,693.15386 L 71.024122,693.83514 L 75.963449,693.83514 L 80.221490,694.51643 L 83.627923,693.83514 L 87.545320,690.42871 C 87.545320,690.42871 90.270466,689.23646 90.951753,688.89581 C 91.633039,688.55517 93.165934,687.87388 93.165934,687.87388 L 91.973683,686.34099 z " id="path8743" style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 94.017542,700.30736 L 89.078215,703.03251 L 85.842104,705.07637 L 83.457601,706.94991 L 77.836987,708.14216 L 75.622806,708.14216 L 81.584063,710.01570 L 86.353069,707.97184 L 91.292396,705.58733 L 92.825291,704.05444 L 94.017542,700.30736 z " id="path8745" style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 91.462718,717.85049 C 91.462718,717.85049 81.924706,721.59757 81.584063,722.27885 C 81.243420,722.96014 78.688595,723.98207 78.688595,723.98207 L 72.897660,724.66336 L 71.024122,725.68529 L 76.644736,726.36657 L 82.435671,724.49304 L 86.693712,724.32271 L 89.929823,722.10853 L 91.462718,720.40532 L 91.462718,717.85049 z " id="path8747" style="fill:#ffffff;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ </g>
+ <path d="M 378.14273,525.28637 C 377.57434,530.51553 378.00099,537.83204 377.43261,543.06120 C 372.27918,543.00443 367.82875,543.82657 360.97078,541.72320 C 359.43614,536.89190 356.80919,529.30796 355.27454,524.47667 C 356.26507,524.72572 356.68741,524.86790 357.82038,524.93742 C 358.95335,525.00694 360.79692,524.96593 361.90337,525.03791 C 363.00981,525.10990 364.25012,525.06768 365.31257,525.13480 C 366.37503,525.20191 367.41113,525.22689 368.41214,525.28180 C 369.41314,525.33669 370.37905,525.38365 371.30113,525.41898 C 372.22321,525.45432 374.35115,525.55378 375.17683,525.56221 C 376.00251,525.57065 375.56381,525.48806 376.27564,525.46225 C 376.98745,525.43643 377.56225,525.35378 378.14273,525.28637 z " id="path10207" sodipodi:nodetypes="ccccsssssssc" style="fill:#ffffff;fill-opacity:0.31547615;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"/>
+ <path d="M 467.06377,199.37552 L 453.69293,208.53364 L 451.86130,221.53816 L 468.71223,214.21167 L 467.06377,199.37552 z " id="path16869" style="fill:#fefefe;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;opacity:1.0000000;color:#000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0;visibility:visible;display:inline;overflow:visible"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/up.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/up.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/up.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:none;stroke:none;">
+ <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;">
+ <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st3 "stroke:none;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_3" style="&st2;">
+ <g>
+ <path style="&st1;" d="M41.1,25.6c0.3,0,0.3-0.3,0.2-0.5L24.4,8.4c-0.5-0.5-0.7-0.4-1,0L6.7,25.1c-0.1,0.1-0.1,0.4,0.1,0.4h10v13.6c0,0.3,0.2,0.5,0.4,0.5l13.3,0c0.3,0,0.5-0.2,0.5-0.5V25.5l10.1,0.1z"/>
+ <path style="&st3;" d="M41.1,25.6c0.3,0,0.3-0.3,0.2-0.5L24.4,8.4c-0.5-0.5-0.7-0.4-1,0L6.7,25.1c-0.1,0.1-0.1,0.4,0.1,0.4h10v13.6c0,0.3,0.2,0.5,0.4,0.5l13.3,0c0.3,0,0.5-0.2,0.5-0.5V25.5l10.1,0.1z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st2;">
+ <path style="&st0;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/images/warning.png
==============================================================================
Binary file. No diff available.

Added: sandbox/doc_test/doc/xhtml/images/warning.svg
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/images/warning.svg 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
+<!DOCTYPE svg [
+ <!ENTITY st0 "fill:#000000;stroke:#FFFFFF;stroke-width:7.9139;stroke-linejoin:round;">
+ <!ENTITY st1 "fill-rule:nonzero;clip-rule:nonzero;fill:#FFFFFF;stroke:#000000;stroke-miterlimit:4;">
+ <!ENTITY st2 "fill:none;stroke:none;">
+ <!ENTITY st3 "fill:#000000;">
+ <!ENTITY st4 "fill-rule:evenodd;clip-rule:evenodd;stroke:none;">
+ <!ENTITY st5 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+]>
+<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+ <g id="Layer_x0020_4" style="&st1;">
+ <g style="&st4;">
+ <path style="&st0;" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/>
+ <path style="&st3;" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/>
+ <path d="M11.7,17.7l18.7,18.7l5.9-5.9L17.6,11.7l-5.9,5.9z"/>
+ <path d="M11.7,30.5l5.9,5.9l18.7-18.7l-5.9-5.9L11.7,30.5z"/>
+ </g>
+ </g>
+ <g id="crop_x0020_marks" style="&st5;">
+ <path style="&st2;" d="M48,48H0V0h48v48z"/>
+ </g>
+</svg>

Added: sandbox/doc_test/doc/xhtml/index.html
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/index.html 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head xmlns="http://www.w3.org/1999/xhtml">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Document To Test Formatting</title>
+ <link xmlns="" rel="stylesheet" href="boostbook.css" type="text/css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.70.1" />
+ <link rel="start" href="index.html" title="Document To Test Formatting" />
+ <link rel="next" href="document_to_test_formatting/introduction.html" title="Introduction" />
+ </head>
+ <body>
+ <script type="text/javascript" src="grouped_links.js"></script>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading_navigation_box">
+ <div class="grouped_links" id="chapters_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ 'boost_libs_grouped_links.xml',
+ 'chapters_select_box',
+ 'http://www.boost.org/libs/');
+ </script>
+ </div>
+ <div class="grouped_links" id="sections_select_box">
+ <script type="text/javascript">
+ grouped_links_select_box(
+ 'sections_grouped_links.xml',
+ 'sections_select_box',
+ './');
+ </script>
+ </div>
+ </div>
+ <div class="heading_search_box">
+ <form id="cref" action="http://google.com/cse">
+ <input type="hidden" name="cref" value="" />
+ <div> Search Boost </div>
+ <div>
+ <input class="search_box" type="text" name="q" id="q" size="40" maxlength="255" alt="Search Text" />
+ </div>
+ </form>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="n" href="document_to_test_formatting/introduction.html">
+ <img src="../../doc/html/images/next.png" alt="Next" />
+ </a>
+ </div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="article" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title"><a id="document_to_test_formatting"></a>Document To Test Formatting</h2>
+ </div>
+ <div>
+ <div class="author">
+ <h3 class="author"><span class="firstname">John</span> <span class="surname">Maddock</span></h3>
+ </div>
+ </div>
+ <div>
+ <div class="author">
+ <h3 class="author"><span class="firstname">Joel</span> <span class="surname">de Guzman</span></h3>
+ </div>
+ </div>
+ <div>
+ <div class="author">
+ <h3 class="author"><span class="firstname">Eric</span> <span class="surname">Niebler</span></h3>
+ </div>
+ </div>
+ <div>
+ <p class="copyright">Copyright © 2007 John Maddock, Joel de Guzman and Eric Niebler</p>
+ </div>
+ <div>
+ <div class="legalnotice">
+ <a id="id2601644"></a>
+ <p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a xmlns="" href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt>)
+ </p>
+ </div>
+ </div>
+ </div>
+ <hr />
+ </div>
+ <div class="toc">
+ <p>
+ <b>Table of Contents</b>
+ </p>
+ <dl>
+ <dt>
+ <span class="section">
+
Introduction
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="document_to_test_formatting/basic_formatting_tests.html">Basic
+ Formatting Tests</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ Images
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ test HTML4 symbols
+ </span>
+ </dt>
+ </dl>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav">
+ <a accesskey="n" href="document_to_test_formatting/introduction.html">
+ <img src="../../doc/html/images/next.png" alt="Next" />
+ </a>
+ </div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="revised">Revised: June 14, 2007 at 02:41:05 GMT</div>
+ <div id="copyright"></div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Added: sandbox/doc_test/doc/xhtml/sections_grouped_links.xml
==============================================================================
--- (empty file)
+++ sandbox/doc_test/doc/xhtml/sections_grouped_links.xml 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--=========================================================================
+
+ Grouped links for Boost.Bimap documentation
+
+ Copyright (c) 2007 Matias Capeletto
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+===========================================================================-->
+
+
+<groupedLinks version="1.0">
+
+<title tag="Sections" url="index.html"/>
+
+<group tag="Introduction" url="document_to_test_formatting/introduction.html"/>
+
+<group tag="Basic Formating Tests" url="document_to_test_formatting/basic_formatting_tests.html" />
+
+<group tag="Images" url="document_to_test_formatting/images.html"/>
+
+<group tag="Test HTML4 symbols" url="document_to_test_formatting/test.html"/>
+
+</groupedLinks>

Added: sandbox/doc_test/grouped_links/css/grouped_links.css
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/css/grouped_links.css 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,53 @@
+/*=============================================================================
+ Copyright (c) 2007 Matias Capeletto
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================*/
+
+
+/******************************************************************************
+ Grouped Links
+******************************************************************************/
+
+ select.grouped_links
+ {
+ background-color: #BEDEBA;
+ font-weight: bold;
+ font-size: 12px;
+ color: #006D00;
+ border: 1px solid #DCDCDC;
+ border-bottom: 1px solid #9D9D9D;
+ border-right: 1px solid #9D9D9D;
+ padding-bottom: 1px;
+ padding-right: 1px;
+ }
+
+ option.grouped_links_title
+ {
+ background-color: #BEDEBA;
+ font-weight: bold;
+ font-size: 12px;
+ color: #006D00;
+ }
+
+ option.grouped_links_group
+ {
+ background-color: #008000;
+ font-weight: bold;
+ font-size: 12px;
+ color: white;
+ }
+
+ option.grouped_links_item
+ {
+ background-color: #FAFFFB;
+ padding: 0px 0px 0px 12px;
+ color: #006D00;
+ font-weight: normal;
+ }
+
+
+/*****************************************************************************/
+

Added: sandbox/doc_test/grouped_links/doc/grouped_links.qbk
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/doc/grouped_links.qbk 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,229 @@
+[library Boost.GroupedLinks
+ [quickbook 1.4]
+ [authors [Capeletto, Matias]]
+ [copyright 2007 Matias Capeletto]
+ [category javascript]
+ [id grouped_links]
+ [dirname grouped_links]
+ [purpose
+ Construct a grouped links select box from a XML definition file
+ ]
+ [source-mode c++]
+ [license
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+[@http://www.boost.org/LICENSE_1_0.txt])
+ ]
+]
+
+[/ QuickBook Document version 1.4 ]
+
+[def __GROUPED_LINKS_IMAGE__ [$images/grouped_links.png]]
+
+[section Introduction]
+
+GroupedLinks is a simple javascript API for building links select boxes.
+
+Features
+
+* Released under Boost Software License.
+* Cross-browser.
+* Items are populated from a simple XML definition file.
+* css based look & feel.
+* Support for relative URLs.
+* Integration with Boostbook.
+* Only standard javascript used.
+
+__GROUPED_LINKS_IMAGE__
+
+[endsect]
+
+[section Tutorial]
+
+
+[section GroupedLinks XML definition]
+
+A GroupedLinks select box is populated from a ['GroupedLinks XML definition]
+file. This is an important feature, because it means that the items are not
+harcoded in the HTML saving us space using global definitions and allowing
+us to change the definition with out touching the HTML files.
+
+['GroupedLinks XML definition] start with a tag named `groupedLinks`.
+There are only three elements:
+
+[table Elements
+[[Name][Purpose]]
+[[`title`][
+Add a title to the GroupedLinks select box. This is useful when
+you do not want to select any of the internals items. The select
+box will show the title instead.
+]]
+[[`group`][
+Starts a group list.
+]]
+[[`item`][
+Links items. They must reside inside a group list.
+]]
+]
+
+All the elements have two attributes:
+
+* [*tag: ] Name of the element, it will be showed in the HTML.
+* [*url: ] URL of the link. It can be relative or absolute. (It is optional)
+
+A ['GroupedLinks XML definition] will look like:
+
+``
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<groupedLinks version="1.0">
+
+<title tag="Title" url="group_1.html"/>
+
+<group tag="Group 1" url="group_1.html">
+
+ <item tag="Item A" url="group_1/item_A.html"/>
+ <item tag="Item B" url="group_1/item_A.html"/>
+ <item tag="Item C" url="http://www.item_C.com"/>
+
+</group>
+
+<group tag="Group 2" url="group_2.html">
+
+ <item tag="Item A" url="group_2/item_A.html"/>
+ <item tag="Item B" url="group_2/item_A.html"/>
+
+</group>
+
+<group tag="Group 3" url="group_3.html"/>
+
+</groupedLinks>
+``
+
+
+[endsect]
+
+[section Including a GroupedLinks select box in your HTML]
+
+To include a ['GroupedLinks select box] in the body of your HTML you have
+to create a form with an unique id and call the javascript function
+`grouped_links_select_box` inside of it.
+
+[table grouped_links_select_box function
+[[][Parameter Name][Purpose]]
+[[1][GroupedLinks XML URL][
+['GroupedLinks XML definition] URL.
+]]
+[[2][Form id][
+id of the form where you want to place the ['GroupedLinks select box].
+]]
+[[3][Base URL][
+A base URL that will be concatenated to all the relatives URLs.
+]]
+[[5][Selected item][
+The item that is selected by default. This parameter is optional, if
+you call the function with only three parameters the tag of the title
+element is used if there is one in the ['GroupedLinks XML definition].
+]]
+]
+
+It is simple enough to be understood from an example:
+
+``
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Boost.GroupedLinks Example</title>
+<link rel="stylesheet" href="../../css/grouped_links.css" type="text/css">
+</head>
+
+<body>
+
+<!-- /* Include the grouped links java script api */ -->
+
+<script type="text/javascript" src="../../js/grouped_links.js"></script>
+
+<!-- /* Add a form with an "id" attribute */ -->
+
+<form id="boost_libs_list">
+
+ <!--/* Call the GroupedLinks "select box" */-->
+
+ <script type="text/javascript">
+
+ grouped_links_select_box('boost_libs.xml',
+ 'boost_libs_list',
+ '../../',
+ 'Boost Libraries');
+
+ </script>
+
+</form>
+``
+
+[note
+Remember to change the `src` of the javascript include line to point
+to the URL of `grouped_links.js` in your system. Try to work with
+relatives paths so the HTML can be easily moved.
+]
+
+[endsect]
+
+[section Boostbook integration]
+
+Add the following lines to your jamfile.v2
+
+ <xsl:param>grouped.links.chapters.show="'true'"
+ <xsl:param>grouped.links.sections.show="'true'"
+ <xsl:param>grouped.links.sections.xml="'sections.XML'" # your XML sections
+
+GroupedLinks select boxes for boost libraries and internal sections can be
+requested to boostbook using the following options:
+
+[table Boostbook GroupedLinks Parameters
+[[Name][Purpose]]
+[[`show`][Include select box]]
+[[`xml`][Path to the XML definition]]
+[[`url`][Base URL to use with relative paths]]
+]
+
+You can configure all the parameters used by boostbook:
+
+ <xsl:param>grouped.links.js="'grouped_links.js'"
+
+ <xsl:param>grouped.links.chapters.show="'true'"
+ <xsl:param>grouped.links.chapters.xml="'boost_libs_grouped_links.XML'"
+ <xsl:param>grouped.links.chapters.url="''"
+
+ <xsl:param>grouped.links.sections.show="'true'"
+ <xsl:param>grouped.links.sections.xml="'sections_grouped_links.XML'"
+ <xsl:param>grouped.links.sections.url="''"
+
+[endsect]
+
+[endsect]
+
+[section Examples]
+
+In the folder `example` you can find two examples using GropedLinks API.
+
+[variablelist
+[[simple][
+How to put a GropedLinks select box in your HTML body.
+]]
+[[boostbook][
+How to integrate GroupedLinks with boostbook and quickbook docs.
+]]
+]
+
+[endsect]
+
+[section Acknowledgments]
+
+Thanks Martin Capeletto (my brother) for teaching me the basics of javascript.
+
+Thanks to the ones that participates in constructing the new boost docs
+look & feel. Special thanks to John Maddock for his support during this period.
+
+[endsect]
+
+

Added: sandbox/doc_test/grouped_links/doc/jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/doc/jamfile.v2 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,26 @@
+# Boost.GroupedLinks
+#
+# Copyright (c) 2007 Matias Capeletto
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+
+import quickbook ;
+
+xml grouped_links
+ :
+ grouped_links.qbk
+ ;
+
+boostbook standalone
+ :
+ grouped_links
+ :
+ <xsl:param>toc.max.depth=2
+ <xsl:param>toc.section.depth=0
+ <xsl:param>chunk.section.depth=0
+ ;
+
+

Added: sandbox/doc_test/grouped_links/doc/xhtml/index.html
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/doc/xhtml/index.html 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,670 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head xmlns="http://www.w3.org/1999/xhtml">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Chapter 1. Boost.GroupedLinks</title>
+ <link xmlns="" rel="stylesheet" href="boostbook.css" type="text/css" />
+ <meta name="generator" content="DocBook XSL Stylesheets V1.70.1" />
+ <link rel="start" href="index.html" title="Chapter 1. Boost.GroupedLinks" />
+ </head>
+ <body>
+ <div id="heading">
+ <div id="heading-placard"></div>
+ <div class="heading_navigation_box"></div>
+ <div class="heading_search_box"></div>
+ </div>
+ <div class="spirit-nav"></div>
+ <div id="body">
+ <div id="body-inner">
+ <div id="content">
+ <div xmlns="http://www.w3.org/1999/xhtml" class="chapter" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title"><a id="grouped_links"></a>Chapter 1. Boost.GroupedLinks</h2>
+ </div>
+ <div>
+ <div class="author">
+ <h3 class="author"><span class="firstname">Matias</span> <span class="surname">Capeletto</span></h3>
+ </div>
+ </div>
+ <div>
+ <p class="copyright">Copyright © 2007 Matias Capeletto</p>
+ </div>
+ <div>
+ <div class="legalnotice">
+ <a id="id2601623"></a>
+ <p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a xmlns="" href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt>)
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="toc">
+ <p>
+ <b>Table of Contents</b>
+ </p>
+ <dl>
+ <dt>
+ <span class="section">
+
Introduction
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ Tutorial
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ Examples
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ Acknowledgments
+ </span>
+ </dt>
+ </dl>
+ </div>
+ <div class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both">
+ <a id="grouped_links.introduction"></a>
+ Introduction
+ </h2>
+ </div>
+ </div>
+ </div>
+ <p>
+ GroupedLinks is a simple javascript API for building links select boxes.
+ </p>
+ <p>
+ Features
+ </p>
+ <div class="itemizedlist">
+ <ul type="disc">
+ <li>
+ Released under Boost Software License.
+ </li>
+ <li>
+ Cross-browser.
+ </li>
+ <li>
+ Items are populated from a simple XML definition file.
+ </li>
+ <li>
+ css based look &amp; feel.
+ </li>
+ <li>
+ Support for relative URLs.
+ </li>
+ <li>
+ Integration with Boostbook.
+ </li>
+ <li>
+ Only standard javascript used.
+ </li>
+ </ul>
+ </div>
+ <p>
+ <span class="inlinemediaobject"><img src="images/grouped_links.png" alt="grouped_links" /></span>
+ </p>
+ </div>
+ <div class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both">
+ <a id="grouped_links.tutorial"></a>
+ Tutorial
+ </h2>
+ </div>
+ </div>
+ </div>
+ <div class="toc">
+ <dl>
+ <dt>
+ <span class="section">
+ <a href="index.html#grouped_links.tutorial.groupedlinks_xml_definition">GroupedLinks
+ XML definition</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="index.html#grouped_links.tutorial.including_a_groupedlinks_select_box_in_your_html">Including
+ a GroupedLinks select box in your HTML</a>
+ </span>
+ </dt>
+ <dt>
+ <span class="section">
+ <a href="index.html#grouped_links.tutorial.boostbook_integration">Boostbook
+ integration</a>
+ </span>
+ </dt>
+ </dl>
+ </div>
+ <div class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title">
+ <a id="grouped_links.tutorial.groupedlinks_xml_definition"></a>
+ <a href="index.html#grouped_links.tutorial.groupedlinks_xml_definition" title="GroupedLinks&#10; XML definition">GroupedLinks
+ XML definition</a>
+ </h3>
+ </div>
+ </div>
+ </div>
+ <p>
+ A GroupedLinks select box is populated from a <span class="emphasis"><em>GroupedLinks XML
+ definition</em></span> file. This is an important feature, because it means
+ that the items are not harcoded in the HTML saving us space using global
+ definitions and allowing us to change the definition with out touching the
+ HTML files.
+ </p>
+ <p>
+ <span class="emphasis"><em>GroupedLinks XML definition</em></span> start with a tag named
+ <code class="computeroutput"><span class="identifier">groupedLinks</span></code>. There are only
+ three elements:
+ </p>
+ <div class="table">
+ <a id="id2565416"></a>
+ <p class="title">
+ <b>Table 1.1. Elements</b>
+ </p>
+ <div class="table-contents">
+ <table xmlns="" class="table" summary="Elements">
+ <colgroup>
+ <col xmlns="http://www.w3.org/1999/xhtml" />
+ <col xmlns="http://www.w3.org/1999/xhtml" />
+ </colgroup>
+ <thead xmlns="http://www.w3.org/1999/xhtml">
+ <tr>
+ <th>
+ <p>
+ Name
+ </p>
+ </th>
+ <th>
+ <p>
+ Purpose
+ </p>
+ </th>
+ </tr>
+ </thead>
+ <tbody xmlns="http://www.w3.org/1999/xhtml">
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">title</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Add a title to the GroupedLinks select box. This is useful when you
+ do not want to select any of the internals items. The select box will
+ show the title instead.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">group</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Starts a group list.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">item</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Links items. They must reside inside a group list.
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break" />
+ <p>
+ All the elements have two attributes:
+ </p>
+ <div class="itemizedlist">
+ <ul type="disc">
+ <li><span class="bold"><strong>tag: </strong></span> Name of the element, it will be
+ showed in the HTML.
+ </li>
+ <li><span class="bold"><strong>url: </strong></span> URL of the link. It can be relative
+ or absolute. (It is optional)
+ </li>
+ </ul>
+ </div>
+ <p>
+ A <span class="emphasis"><em>GroupedLinks XML definition</em></span> will look like:
+ </p>
+ <p>
+
+</p>
+ <pre class="programlisting">
+<span class="special">&lt;?</span><span class="identifier">xml</span> <span class="identifier">version</span><span class="special">=</span><span class="string">"1.0"</span> <span class="identifier">encoding</span><span class="special">=</span><span class="string">"UTF-8"</span> <span class="special">?&gt;</span>
+
+<span class="special">&lt;</span><span class="identifier">groupedLinks</span> <span class="identifier">version</span><span class="special">=</span><span class="string">"1.0"</span><span class="special">&gt;</span>
+
+<span class="special">&lt;</span><span class="identifier">title</span> <span class="identifier">tag</span><span class="special">=</span><span class="string">"Title"</span> <span class="identifier">url</span><span class="special">=</span><span class="string">"group_1.html"</span><span class="special">/&gt;</span>
+
+<span class="special">&lt;</span><span class="identifier">group</span> <span class="identifier">tag</span><span class="special">=</span><span class="string">"Group 1"</span> <span class="identifier">url</span><span class="special">=</span><span class="string">"group_1.html"</span><span class="special">&gt;</span>
+
+ <span class="special">&lt;</span><span class="identifier">item</span> <span class="identifier">tag</span><span class="special">=</span><span class="string">"Item A"</span> <span class="identifier">url</span><span class="special">=</span><span class="string">"group_1/item_A.html"</span><span class="special">/&gt;</span>
+ <span class="special">&lt;</span><span class="identifier">item</span> <span class="identifier">tag</span><span class="special">=</span><span class="string">"Item B"</span> <span class="identifier">url</span><span class="special">=</span><span class="string">"group_1/item_A.html"</span><span class="special">/&gt;</span>
+ <span class="special">&lt;</span><span class="identifier">item</span> <span class="identifier">tag</span><span class="special">=</span><span class="string">"Item C"</span> <span class="identifier">url</span><span class="special">=</span><span class="string">"http://www.item_C.com"</span><span class="special">/&gt;</span>
+
+<span class="special">&lt;/</span><span class="identifier">group</span><span class="special">&gt;</span>
+
+<span class="special">&lt;</span><span class="identifier">group</span> <span class="identifier">tag</span><span class="special">=</span><span class="string">"Group 2"</span> <span class="identifier">url</span><span class="special">=</span><span class="string">"group_2.html"</span><span class="special">&gt;</span>
+
+ <span class="special">&lt;</span><span class="identifier">item</span> <span class="identifier">tag</span><span class="special">=</span><span class="string">"Item A"</span> <span class="identifier">url</span><span class="special">=</span><span class="string">"group_2/item_A.html"</span><span class="special">/&gt;</span>
+ <span class="special">&lt;</span><span class="identifier">item</span> <span class="identifier">tag</span><span class="special">=</span><span class="string">"Item B"</span> <span class="identifier">url</span><span class="special">=</span><span class="string">"group_2/item_A.html"</span><span class="special">/&gt;</span>
+
+<span class="special">&lt;/</span><span class="identifier">group</span><span class="special">&gt;</span>
+
+<span class="special">&lt;</span><span class="identifier">group</span> <span class="identifier">tag</span><span class="special">=</span><span class="string">"Group 3"</span> <span class="identifier">url</span><span class="special">=</span><span class="string">"group_3.html"</span><span class="special">/&gt;</span>
+
+<span class="special">&lt;/</span><span class="identifier">groupedLinks</span><span class="special">&gt;</span>
+</pre>
+ <p>
+ </p>
+ </div>
+ <div class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title">
+ <a id="grouped_links.tutorial.including_a_groupedlinks_select_box_in_your_html"></a>
+ <a href="index.html#grouped_links.tutorial.including_a_groupedlinks_select_box_in_your_html" title="Including&#10; a GroupedLinks select box in your HTML">Including
+ a GroupedLinks select box in your HTML</a>
+ </h3>
+ </div>
+ </div>
+ </div>
+ <p>
+ To include a <span class="emphasis"><em>GroupedLinks select box</em></span> in the body of
+ your HTML you have to create a form with an unique id and call the javascript
+ function <code class="computeroutput"><span class="identifier">grouped_links_select_box</span></code>
+ inside of it.
+ </p>
+ <div class="table">
+ <a id="id2611051"></a>
+ <p class="title">
+ <b>Table 1.2. grouped_links_select_box function</b>
+ </p>
+ <div class="table-contents">
+ <table xmlns="" class="table" summary="grouped_links_select_box function">
+ <colgroup>
+ <col xmlns="http://www.w3.org/1999/xhtml" />
+ <col xmlns="http://www.w3.org/1999/xhtml" />
+ <col xmlns="http://www.w3.org/1999/xhtml" />
+ </colgroup>
+ <thead xmlns="http://www.w3.org/1999/xhtml">
+ <tr>
+ <th>
+ <p>
+ </p>
+ </th>
+ <th>
+ <p>
+ Parameter Name
+ </p>
+ </th>
+ <th>
+ <p>
+ Purpose
+ </p>
+ </th>
+ </tr>
+ </thead>
+ <tbody xmlns="http://www.w3.org/1999/xhtml">
+ <tr>
+ <td>
+ <p>
+ 1
+ </p>
+ </td>
+ <td>
+ <p>
+ GroupedLinks XML URL
+ </p>
+ </td>
+ <td>
+ <p>
+ <span class="emphasis"><em>GroupedLinks XML definition</em></span> URL.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ 2
+ </p>
+ </td>
+ <td>
+ <p>
+ Form id
+ </p>
+ </td>
+ <td>
+ <p>
+ id of the form where you want to place the <span class="emphasis"><em>GroupedLinks select
+ box</em></span>.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ 3
+ </p>
+ </td>
+ <td>
+ <p>
+ Base URL
+ </p>
+ </td>
+ <td>
+ <p>
+ A base URL that will be concatenated to all the relatives URLs.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ 5
+ </p>
+ </td>
+ <td>
+ <p>
+ Selected item
+ </p>
+ </td>
+ <td>
+ <p>
+ The item that is selected by default. This parameter is optional, if
+ you call the function with only three parameters the tag of the title
+ element is used if there is one in the <span class="emphasis"><em>GroupedLinks XML definition</em></span>.
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break" />
+ <p>
+ It is simple enough to be understood from an example:
+ </p>
+ <p>
+
+</p>
+ <pre class="programlisting">
+<span class="special">&lt;</span><span class="identifier">head</span><span class="special">&gt;</span>
+<span class="special">&lt;</span><span class="identifier">meta</span> <span class="identifier">http</span><span class="special">-</span><span class="identifier">equiv</span><span class="special">=</span><span class="string">"Content-Type"</span> <span class="identifier">content</span><span class="special">=</span><span class="string">"text/html; charset=ISO-8859-1"</span><span class="special">&gt;</span>
+<span class="special">&lt;</span><span class="identifier">title</span><span class="special">&gt;</span><span class="identifier">Boost</span><span class="special">.</span><span class="identifier">GroupedLinks</span> <span class="identifier">Example</span><span class="special">&lt;/</span><span class="identifier">title</span><span class="special">&gt;</span>
+<span class="special">&lt;</span><span class="identifier">link</span> <span class="identifier">rel</span><span class="special">=</span><span class="string">"stylesheet"</span> <span class="identifier">href</span><span class="special">=</span><span class="string">"../../css/grouped_links.css"</span> <span class="identifier">type</span><span class="special">=</span><span class="string">"text/css"</span><span class="special">&gt;</span>
+<span class="special">&lt;/</span><span class="identifier">head</span><span class="special">&gt;</span>
+
+<span class="special">&lt;</span><span class="identifier">body</span><span class="special">&gt;</span>
+
+<span class="special">&lt;!--</span> <span class="comment">/* Include the grouped links java script api */</span> <span class="special">--&gt;</span>
+
+<span class="special">&lt;</span><span class="identifier">script</span> <span class="identifier">type</span><span class="special">=</span><span class="string">"text/javascript"</span> <span class="identifier">src</span><span class="special">=</span><span class="string">"../../js/grouped_links.js"</span><span class="special">&gt;&lt;/</span><span class="identifier">script</span><span class="special">&gt;</span>
+
+<span class="special">&lt;!--</span> <span class="comment">/* Add a form with an "id" attribute */</span> <span class="special">--&gt;</span>
+
+<span class="special">&lt;</span><span class="identifier">form</span> <span class="identifier">id</span><span class="special">=</span><span class="string">"boost_libs_list"</span><span class="special">&gt;</span>
+
+ <span class="special">&lt;!--/*</span> <span class="identifier">Call</span> <span class="identifier">the</span> <span class="identifier">GroupedLinks</span> <span class="string">"select box"</span> <span class="special">*/--&gt;</span>
+
+ <span class="special">&lt;</span><span class="identifier">script</span> <span class="identifier">type</span><span class="special">=</span><span class="string">"text/javascript"</span><span class="special">&gt;</span>
+
+ <span class="identifier">grouped_links_select_box</span><span class="special">(</span><span class="char">'boost_libs.xml'</span><span class="special">,</span>
+ <span class="char">'boost_libs_list'</span><span class="special">,</span>
+ <span class="char">'../../'</span><span class="special">,</span>
+ <span class="char">'Boost Libraries'</span><span class="special">);</span>
+
+ <span class="special">&lt;/</span><span class="identifier">script</span><span class="special">&gt;</span>
+
+<span class="special">&lt;/</span><span class="identifier">form</span><span class="special">&gt;</span>
+</pre>
+ <p>
+ </p>
+ <div xmlns="" class="note">
+ <div class="admonition-graphic">
+ <img alt="[Note]" src="../../doc/html/images/note.png" />
+ </div>
+ <div class="admonition-body">
+ <div class="admonition-title">Note</div>
+ <div class="admonition-content">
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ Remember to change the <code class="computeroutput"><span class="identifier">src</span></code>
+ of the javascript include line to point to the URL of <code class="computeroutput"><span class="identifier">grouped_links</span><span class="special">.</span><span class="identifier">js</span></code>
+ in your system. Try to work with relatives paths so the HTML can be easily
+ moved.
+ </p>
+ <p xmlns="http://www.w3.org/1999/xhtml">
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h3 class="title">
+ <a id="grouped_links.tutorial.boostbook_integration"></a>
+ <a href="index.html#grouped_links.tutorial.boostbook_integration" title="Boostbook&#10; integration">Boostbook
+ integration</a>
+ </h3>
+ </div>
+ </div>
+ </div>
+ <p>
+ Add the following lines to your jamfile.v2
+ </p>
+ <pre class="programlisting">
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">chapters</span><span class="special">.</span><span class="identifier">show</span><span class="special">=</span><span class="string">"'true'"</span>
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">sections</span><span class="special">.</span><span class="identifier">show</span><span class="special">=</span><span class="string">"'true'"</span>
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">sections</span><span class="special">.</span><span class="identifier">xml</span><span class="special">=</span><span class="string">"'sections.XML'"</span> <span class="preprocessor"># your</span> <span class="identifier">XML</span> <span class="identifier">sections</span>
+</pre>
+ <p>
+ GroupedLinks select boxes for boost libraries and internal sections can be
+ requested to boostbook using the following options:
+ </p>
+ <div class="table">
+ <a id="id2611978"></a>
+ <p class="title">
+ <b>Table 1.3. Boostbook GroupedLinks Parameters</b>
+ </p>
+ <div class="table-contents">
+ <table xmlns="" class="table" summary="Boostbook GroupedLinks Parameters">
+ <colgroup>
+ <col xmlns="http://www.w3.org/1999/xhtml" />
+ <col xmlns="http://www.w3.org/1999/xhtml" />
+ </colgroup>
+ <thead xmlns="http://www.w3.org/1999/xhtml">
+ <tr>
+ <th>
+ <p>
+ Name
+ </p>
+ </th>
+ <th>
+ <p>
+ Purpose
+ </p>
+ </th>
+ </tr>
+ </thead>
+ <tbody xmlns="http://www.w3.org/1999/xhtml">
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">show</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Include select box
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">xml</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Path to the XML definition
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>
+ <code class="computeroutput"><span class="identifier">url</span></code>
+ </p>
+ </td>
+ <td>
+ <p>
+ Base URL to use with relative paths
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <br class="table-break" />
+ <p>
+ You can configure all the parameters used by boostbook:
+ </p>
+ <pre class="programlisting">
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">js</span><span class="special">=</span><span class="string">"'grouped_links.js'"</span>
+
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">chapters</span><span class="special">.</span><span class="identifier">show</span><span class="special">=</span><span class="string">"'true'"</span>
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">chapters</span><span class="special">.</span><span class="identifier">xml</span><span class="special">=</span><span class="string">"'boost_libs_grouped_links.XML'"</span>
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">chapters</span><span class="special">.</span><span class="identifier">url</span><span class="special">=</span><span class="string">"''"</span>
+
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">sections</span><span class="special">.</span><span class="identifier">show</span><span class="special">=</span><span class="string">"'true'"</span>
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">sections</span><span class="special">.</span><span class="identifier">xml</span><span class="special">=</span><span class="string">"'sections_grouped_links.XML'"</span>
+<span class="special">&lt;</span><span class="identifier">xsl</span><span class="special">:</span><span class="identifier">param</span><span class="special">&gt;</span><span class="identifier">grouped</span><span class="special">.</span><span class="identifier">links</span><span class="special">.</span><span class="identifier">sections</span><span class="special">.</span><span class="identifier">url</span><span class="special">=</span><span class="string">"''"</span>
+</pre>
+ </div>
+ </div>
+ <div class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both">
+ <a id="grouped_links.examples"></a>
+ Examples
+ </h2>
+ </div>
+ </div>
+ </div>
+ <p>
+ In the folder <code class="computeroutput"><span class="identifier">example</span></code> you can
+ find two examples using GropedLinks API.
+ </p>
+ <div class="variablelist">
+ <p class="title">
+ <b></b>
+ </p>
+ <dl>
+ <dt>
+ <span class="term">simple</span>
+ </dt>
+ <dd>
+ How to put a GropedLinks select box in your HTML body.
+ </dd>
+ <dt>
+ <span class="term">boostbook</span>
+ </dt>
+ <dd>
+ How to integrate GroupedLinks with boostbook and quickbook docs.
+ </dd>
+ </dl>
+ </div>
+ </div>
+ <div class="section" lang="en" xml:lang="en">
+ <div class="titlepage">
+ <div>
+ <div>
+ <h2 class="title" style="clear: both">
+ <a id="grouped_links.acknowledgments"></a>
+ Acknowledgments
+ </h2>
+ </div>
+ </div>
+ </div>
+ <p>
+ Thanks Martin Capeletto (my brother) for teaching me the basics of javascript.
+ </p>
+ <p>
+ Thanks to the ones that participates in constructing the new boost docs look
+ &amp; feel. Special thanks to John Maddock for his support during this period.
+ </p>
+ </div>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </div>
+ <div class="spirit-nav"></div>
+ <div id="footer">
+ <div id="footer-left">
+ <div id="revised">Revised: June 13, 2007 at 00:31:24 GMT</div>
+ <div id="copyright"></div>
+ <div id="license">
+ <p>Distributed under the
+ Boost Software License, Version 1.0.
+ </p>
+ </div>
+ </div>
+ <div id="footer-right">
+ <div id="banners">
+ <p id="banner-xhtml">
+ XHTML 1.0
+ </p>
+ <p id="banner-css">
+ CSS
+ </p>
+ <p id="banner-sourceforge">
+ SourceForge
+ </p>
+ </div>
+ </div>
+ <div class="clear"></div>
+ </div>
+ </body>
+</html>

Added: sandbox/doc_test/grouped_links/example/boostbook_integration/example.qbk
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/example/boostbook_integration/example.qbk 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,76 @@
+[library Boost.GroupedLinks example
+ [quickbook 1.4]
+ [authors [Capeletto, Matias]]
+ [copyright 2007 Matias Capeletto]
+ [category example]
+ [id boostbook_integration]
+ [dirname boostbook_integration]
+ [purpose
+ Boost.GroupedLinks Boostbook Integration example
+ ]
+ [source-mode c++]
+ [license
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+[@http://www.boost.org/LICENSE_1_0.txt])
+ ]
+]
+
+[/ QuickBook Document version 1.4 ]
+
+
+[section Preface]
+Preface section
+[endsect]
+
+[section First]
+First section
+
+[section Sub A]
+First section - subsection A
+
+
+[endsect]
+
+[section Sub B]
+First section - subsection B
+
+
+[endsect]
+
+[section Sub C]
+First section - subsection C
+
+
+[endsect]
+
+[endsect]
+
+[section Second]
+Second section
+
+[section Sub A]
+Second section - subsection A
+
+
+[endsect]
+
+[section Sub B]
+Second section - subsection B
+
+
+[endsect]
+
+[endsect]
+
+[section Final]
+Final section
+
+
+[endsect]
+
+
+
+
+
+

Added: sandbox/doc_test/grouped_links/example/boostbook_integration/jamfile.v2
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/example/boostbook_integration/jamfile.v2 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,56 @@
+# Boost.GroupedLinks
+#
+# Copyright (c) 2007 Matias Capeletto
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+
+# Quickbook
+# -----------------------------------------------------------------------------
+
+import quickbook ;
+
+xml example
+ :
+ example.qbk
+ ;
+
+boostbook standalone
+ :
+ example
+ :
+ <xsl:param>toc.max.depth=2
+ <xsl:param>toc.section.depth=4
+ <xsl:param>chunk.section.depth=3
+
+ # Choose the page style
+ <xsl:param>page.style="'website'"
+
+ # Show the chapters select box
+ <xsl:param>grouped.links.chapters.show="'true'"
+
+ # Path to the chapters grouped links xml definition (can be relative)
+ <xsl:param>grouped.links.chapters.xml="'boost_libs_grouped_links.xml'"
+
+ # Base url used for relative paths of the chapters grouped links
+ <xsl:param>grouped.links.chapters.url="'http://www.boost.org/libs/'"
+
+ # Show the sections select box
+ <xsl:param>grouped.links.sections.show="'true'"
+
+ # Path to the sections grouped links xml definition (can be relative)
+ <xsl:param>grouped.links.sections.xml="'sections_grouped_links.xml'"
+
+ # Base url used for relative paths of the sections grouped links
+ <xsl:param>grouped.links.sections.url="'./'"
+
+ # Show the google linked cse search box
+ <xsl:param>search.box.show="'true'"
+
+ # Path to the cse definition (absolute web path)
+ <xsl:param>search.box.cse.definition.src="'http://www.drivehq.com/web/matias.capeletto/bimap/doc/html/context8.xml'"
+
+ ;
+

Added: sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/boost_libs_grouped_links.xml
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/boost_libs_grouped_links.xml 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--=========================================================================
+
+ Grouped links for Boost Libraries documentation
+
+ Copyright (c) 2007 Matias Capeletto
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+===========================================================================-->
+
+
+<groupedLinks version="1.0">
+
+<title tag="Boost Libraries" url="index.html" />
+
+<group tag="Text processing" url="index.html" >
+<!--=======================================================================-->
+ <item tag="lexical_cast" url="conversion/lexical_cast.htm" />
+ <item tag="format" url="format/index.html" />
+ <item tag="iostreams" url="iostreams/doc/index.html" />
+ <item tag="regex" url="regex/index.html" />
+ <item tag="spirit" url="spirit/index.html" />
+ <item tag="string_algo" url="algorithm/string/index.html" />
+ <item tag="tokenizer" url="tokenizer/index.html" />
+ <item tag="wave" url="wave/index.html" />
+ <item tag="xpressive" url="xpressive/index.html" />
+
+</group>
+
+
+<group tag="Data structures" url="index.html" >
+<!--=======================================================================-->
+ <item tag="any" url="any/index.html" />
+ <item tag="array" url="array/index.html" />
+ <item tag="bimap" url="http://tinyurl.com/22sja5" />
+ <item tag="compressed_pair" url="utility/compressed_pair.htm" />
+ <item tag="dynamic_bitset" url="dynamic_bitset/dynamic_bitset.html" />
+ <item tag="graph" url="graph/doc/table_of_contents.html" />
+ <item tag="multi_array" url="multi_array/doc/index.html" />
+ <item tag="multi_index" url="multi_index/doc/index.html" />
+ <item tag="optional" url="libs/optional/doc/optional.html" />
+ <item tag="ptr_container" url="ptr_container/index.html" />
+ <item tag="property_map" url="property_map/property_map.html" />
+ <item tag="tribool" url="doc/html/tribool.html" />
+ <item tag="tuple" url="tuple/doc/tuple_users_guide.html" />
+ <item tag="variant" url="variant/index.html" />
+
+</group>
+
+
+<group tag="Algorithms" url="index.html" >
+<!--=======================================================================-->
+ <item tag="foreach" url="foreach/index.html" />
+ <item tag="minmax" url="algorithm/minmax/index.html" />
+ <item tag="range" url="range/index.html" />
+
+</group>
+
+
+<group tag="Functional" url="index.html" >
+<!--=======================================================================-->
+ <item tag="bind" url="bind/bind.html" />
+ <item tag="function" url="function/index.html" />
+ <item tag="functional" url="functional/index.htm" />
+ <item tag="hash" url="functional/hash/index.html" />
+ <item tag="lambda" url="lambda/index.html" />
+ <item tag="bind" url="bind/ref.html" />
+ <item tag="signals" url="signals/index.html" />
+ <item tag="result_of" url="utility/utility.htm#result_of" />
+
+</group>
+
+
+<group tag="Generic Programming" url="index.html" >
+<!--=======================================================================-->
+ <item tag="call_traits" url="utility/call_traits.htm" />
+ <item tag="concept_check" url="concept_check/concept_check.htm" />
+ <item tag="enable_if" url="utility/enable_if.html" />
+ <item tag="in_place_factory" url="utility/in_place_factories.html" />
+ <item tag="iterators" url="iterator/doc/index.html" />
+ <item tag="operators" url="utility/operators.htm" />
+ <item tag="typeof" url="typeof/index.html" />
+
+</group>
+
+
+<group tag="Metaprogramming" url="index.html" >
+<!--=======================================================================-->
+ <item tag="mpl" url="mpl/doc/index.html" />
+ <item tag="static_assert" url="static_assert/static_assert.htm" />
+ <item tag="type_traits" url="type_traits/index.html" />
+
+</group>
+
+
+<group tag="Concurrent" url="index.html" >
+<!--=======================================================================-->
+ <item tag="thread" url="thread/doc/index.html" />
+
+</group>
+
+
+<group tag="Math and numerics" url="index.html" >
+<!--=======================================================================-->
+ <item tag="math" url="math/doc/index.html" />
+ <item tag="conversion" url="numeric/conversion/index.html" />
+ <item tag="integer" url="integer/index.html" />
+ <item tag="interval" url="numeric/interval/doc/interval.htm" />
+ <item tag="random" url="random/index.html" />
+ <item tag="rational" url="rational/index.html" />
+ <item tag="ublas" url="numeric/ublas/doc/index.htm" />
+
+</group>
+
+
+<group tag="Input Output" url="index.html" >
+<!--=======================================================================-->
+ <item tag="io state savers" url="io/doc/ios_state.html" />
+ <item tag="program_options" url="../doc/html/program_options.html" />
+ <item tag="serialization" url="serialization/doc/index.html" />
+
+</group>
+
+
+<group tag="Memory" url="index.html" >
+<!--=======================================================================-->
+ <item tag="pool" url="pool/doc/index.html" />
+ <item tag="smart_ptr" url="smart_ptr/index.html" />
+ <item tag="utility" url="utility/utility.htm" />
+
+</group>
+
+
+<group tag="Miscellaneous" url="index.html" >
+<!--=======================================================================-->
+ <item tag="assign" url="assign/index.html" />
+ <item tag="base from member" url="utility/base_from_member.html" />
+ <item tag="crc" url="crc/index.html" />
+ <item tag="date_time" url="date_time/doc/index.html" />
+ <item tag="filesystem" url="filesystem/doc/index.htm" />
+ <item tag="parameter" url="parameter/doc/html/index.html" />
+ <item tag="preprocesor" url="preprocessor/doc/index.html" />
+ <item tag="python" url="python/doc/index.html" />
+ <item tag="timer" url="timer/index.html" />
+ <item tag="tr1" url="tr1/index.html" />
+ <item tag="statechart" url="statechart/doc/index.html" />
+ <item tag="value_initialized" url="utility/value_init.htm" />
+
+</group>
+
+
+<group tag="Compiler workarounds" url="index.html" >
+<!--=======================================================================-->
+ <item tag="compatibility" url="compatibility/index.html" />
+ <item tag="config" url="config/config.htm" />
+
+</group>
+
+
+
+</groupedLinks>
+

Added: sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/grouped_links.js
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/grouped_links.js 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,189 @@
+/*===========================================================================
+ Copyright (c) 2007 Matias Capeletto
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+===========================================================================*/
+
+/*********************** GroupedLinks API **********************************
+
+In your html body use it like:
+----------------------------------------------------------------------------
+<!-- Include the grouped links java script api
+ Remember to change this line with the path of your grouped_links.js -->
+
+<script type="text/javascript" src="grouped_links.js"></script>
+
+<!-- Add a form with an "id" attribute -->
+
+<form id="boost_libs_list">
+
+ <!-- Call the GroupedLinks "select box" with the following parameters
+ (1) GroupedLinks xml definition url
+ (2) form id
+ (3) base url for the links
+ (4) selected item [optional] -->
+
+ <script type="text/javascript">
+
+ grouped_links_select_box('boost_libs_grouped_links.xml',
+ 'boost_libs_list',
+ 'http://www.boost.org/libs/');
+
+ </script>
+
+</form>
+---------------------------------------------------------------------------
+
+Read the html docs for more information.
+
+**************************************************************************/
+
+
+(function() {
+
+// Load an xml file, and pass it to the callback function when it is ready
+
+function asinc_load_xml(url, callback)
+{
+ var XMLHttpRequestObject =
+ window.XMLHttpRequest ? new XMLHttpRequest() :
+ window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") :
+ false;
+
+ if(XMLHttpRequestObject)
+ {
+ XMLHttpRequestObject.open("GET", url);
+ XMLHttpRequestObject.onreadystatechange = function()
+ {
+ // Check for XMLHttpRequestObject.status == 200, it returns 0?
+ if (XMLHttpRequestObject.readyState == 4 )
+ {
+
+ callback(XMLHttpRequestObject.responseXML);
+ delete XMLHttpRequestObject;
+ XMLHttpRequestObject = null;
+ }
+ }
+ XMLHttpRequestObject.send(null);
+ }
+}
+
+// Add the base url if it is relative
+
+function format_url(sUrl,sBaseUrl)
+{
+ if( sUrl.substring(0,7) == 'http://' )
+ {
+ return sUrl;
+ }
+ return sBaseUrl + sUrl;
+}
+
+// Options for drop down list
+
+function construct_html_select_option(sClass,sTag,sUrl,bSelected)
+{
+ return '<option ' + (bSelected ? 'selected ' : '') +
+ 'class="' + sClass + '"' + ' value="' + sUrl + '" >'
+ + sTag + '</option>\n';
+}
+
+function construct_select_option(oXmlElement,sClass,
+ sBaseUrl,sDefaultUrl,sSelected)
+{
+ return construct_html_select_option(
+ sClass,
+ oXmlElement.getAttribute('tag'),
+ oXmlElement.hasAttribute('url') ?
+ format_url(oXmlElement.getAttribute('url'),sBaseUrl) :
+ sDefaultUrl,
+ sSelected == oXmlElement.getAttribute('tag')
+ );
+}
+
+function construct_multiple_select_options(oXmlElements,sClass,
+ sBaseUrl,sDefaultUrl,sSelected)
+{
+ var sOptionsHtml;
+ for(var i = 0; i < oXmlElements.length; i++)
+ {
+ sOptionsHtml += construct_select_option(
+ oXmlElements[i], sClass, sBaseUrl,sDefaultUrl,sSelected
+ );
+ }
+ return sOptionsHtml;
+}
+
+// Populate a select block from an xml and insert the result in sId div
+
+function select_box(sXmlUrl,sId,sBaseUrl,sSelected)
+{
+ asinc_load_xml(sXmlUrl, function(oXml) {
+
+ // manage parameters
+
+ if( sBaseUrl != '' && sBaseUrl.charAt( sBaseUrl.length-1 ) != '/' )
+ {
+ sBaseUrl += '/';
+ }
+ var sDefaultUrl = sBaseUrl + 'index';
+ var oTitles = oXml.getElementsByTagName('title');
+ if( sSelected == null && oTitles.length > 0 )
+ {
+ sSelected = oTitles[0].getAttribute('tag');
+ if( oTitles[0].hasAttribute('url') )
+ {
+ sDefaultUrl = oTitles[0].getAttribute('url');
+ }
+ }
+
+ // Construct the select box
+
+ var sSelectHtml =
+ '<select class="grouped_links"' +
+ ' name="drowpdown"' +
+ ' size="1"' +
+ ' OnChange="grouped_links_internal_go_to_url(this.form)">\n' ;
+
+ sSelectHtml += construct_multiple_select_options(
+ oTitles,
+ 'grouped_links_title', sBaseUrl, sDefaultUrl, sSelected
+ );
+
+ var aGroups = oXml.getElementsByTagName('group');
+ for(var ig = 0; ig < aGroups.length; ig++)
+ {
+ sSelectHtml += construct_select_option(
+ aGroups[ig],
+ 'grouped_links_group', sBaseUrl, sDefaultUrl, sSelected
+ );
+
+ sSelectHtml += construct_multiple_select_options(
+ aGroups[ig].getElementsByTagName('item'),
+ 'grouped_links_item', sBaseUrl, sDefaultUrl, sSelected
+ );
+ }
+
+ sSelectHtml += '</select>\n';
+ document.getElementById(sId).innerHTML = sSelectHtml;
+
+ } );
+}
+
+// Action function used when the user selects an option from the drop down list
+
+function go_to_url(form)
+{
+ var formindex = form.drowpdown.selectedIndex;
+ parent.self.location = form.drowpdown.options[formindex].value;
+}
+
+// Api public interface
+
+window["grouped_links_select_box"] = select_box ;
+window["grouped_links_internal_go_to_url" ] = go_to_url ;
+
+})();
+

Added: sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/sections_grouped_links.xml
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/example/boostbook_integration/xhtml/sections_grouped_links.xml 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--=========================================================================
+
+ Grouped links for Boost.GroupedLinks boostbook integration example
+
+ Copyright (c) 2007 Matias Capeletto
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+===========================================================================-->
+
+
+<groupedLinks version="1.0">
+
+<title tag="Sections" url="index.html"/>
+
+<group tag="Preface" url="index.html"/>
+
+<group tag="First" url="boostbook_integration/first.html">
+ <item tag="Sub A" url="boostbook_integration/first.html"/>
+ <item tag="Sub B" url="boostbook_integration/first/sub_b.html"/>
+ <item tag="Sub C" url="boostbook_integration/first/sub_c.html"/>
+</group>
+
+<group tag="Second" url="boostbook_integration/second.html">
+ <item tag="Sub A" url="boostbook_integration/second.html"/>
+ <item tag="Sub B" url="boostbook_integration/second/sub_b.html"/>
+</group>
+
+<group tag="Final" url="boostbook_integration/final.html"/>
+
+</groupedLinks>

Added: sandbox/doc_test/grouped_links/example/simple/boost_libs.xml
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/example/simple/boost_libs.xml 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!--=========================================================================
+
+ Grouped links for Boost Libraries documentation
+
+ Copyright (c) 2007 Matias Capeletto
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+
+===========================================================================-->
+
+
+<groupedLinks version="1.0">
+
+<title tag="Boost Libraries" url="index.html" />
+
+<group tag="Text processing" url="index.html" >
+<!--=======================================================================-->
+ <item tag="lexical_cast" url="conversion/lexical_cast.htm" />
+ <item tag="format" url="format/index.html" />
+ <item tag="iostreams" url="iostreams/doc/index.html" />
+ <item tag="regex" url="regex/index.html" />
+ <item tag="spirit" url="spirit/index.html" />
+ <item tag="string_algo" url="algorithm/string/index.html" />
+ <item tag="tokenizer" url="tokenizer/index.html" />
+ <item tag="wave" url="wave/index.html" />
+ <item tag="xpressive" url="xpressive/index.html" />
+
+</group>
+
+
+<group tag="Data structures" url="index.html" >
+<!--=======================================================================-->
+ <item tag="any" url="any/index.html" />
+ <item tag="array" url="array/index.html" />
+ <item tag="bimap" url="http://tinyurl.com/22sja5" />
+ <item tag="compressed_pair" url="utility/compressed_pair.htm" />
+ <item tag="dynamic_bitset" url="dynamic_bitset/dynamic_bitset.html" />
+ <item tag="graph" url="graph/doc/table_of_contents.html" />
+ <item tag="multi_array" url="multi_array/doc/index.html" />
+ <item tag="multi_index" url="multi_index/doc/index.html" />
+ <item tag="optional" url="libs/optional/doc/optional.html" />
+ <item tag="ptr_container" url="ptr_container/index.html" />
+ <item tag="property_map" url="property_map/property_map.html" />
+ <item tag="tribool" url="doc/html/tribool.html" />
+ <item tag="tuple" url="tuple/doc/tuple_users_guide.html" />
+ <item tag="variant" url="variant/index.html" />
+
+</group>
+
+
+<group tag="Algorithms" url="index.html" >
+<!--=======================================================================-->
+ <item tag="foreach" url="foreach/index.html" />
+ <item tag="minmax" url="algorithm/minmax/index.html" />
+ <item tag="range" url="range/index.html" />
+
+</group>
+
+
+<group tag="Functional" url="index.html" >
+<!--=======================================================================-->
+ <item tag="bind" url="bind/bind.html" />
+ <item tag="function" url="function/index.html" />
+ <item tag="functional" url="functional/index.htm" />
+ <item tag="hash" url="functional/hash/index.html" />
+ <item tag="lambda" url="lambda/index.html" />
+ <item tag="bind" url="bind/ref.html" />
+ <item tag="signals" url="signals/index.html" />
+ <item tag="result_of" url="utility/utility.htm#result_of" />
+
+</group>
+
+
+<group tag="Generic Programming" url="index.html" >
+<!--=======================================================================-->
+ <item tag="call_traits" url="utility/call_traits.htm" />
+ <item tag="concept_check" url="concept_check/concept_check.htm" />
+ <item tag="enable_if" url="utility/enable_if.html" />
+ <item tag="in_place_factory" url="utility/in_place_factories.html" />
+ <item tag="iterators" url="iterator/doc/index.html" />
+ <item tag="operators" url="utility/operators.htm" />
+ <item tag="typeof" url="typeof/index.html" />
+
+</group>
+
+
+<group tag="Metaprogramming" url="index.html" >
+<!--=======================================================================-->
+ <item tag="mpl" url="mpl/doc/index.html" />
+ <item tag="static_assert" url="static_assert/static_assert.htm" />
+ <item tag="type_traits" url="type_traits/index.html" />
+
+</group>
+
+
+<group tag="Concurrent" url="index.html" >
+<!--=======================================================================-->
+ <item tag="thread" url="thread/doc/index.html" />
+
+</group>
+
+
+<group tag="Math and numerics" url="index.html" >
+<!--=======================================================================-->
+ <item tag="math" url="math/doc/index.html" />
+ <item tag="conversion" url="numeric/conversion/index.html" />
+ <item tag="integer" url="integer/index.html" />
+ <item tag="interval" url="numeric/interval/doc/interval.htm" />
+ <item tag="random" url="random/index.html" />
+ <item tag="rational" url="rational/index.html" />
+ <item tag="ublas" url="numeric/ublas/doc/index.htm" />
+
+</group>
+
+
+<group tag="Input Output" url="index.html" >
+<!--=======================================================================-->
+ <item tag="io state savers" url="io/doc/ios_state.html" />
+ <item tag="program_options" url="../doc/html/program_options.html" />
+ <item tag="serialization" url="serialization/doc/index.html" />
+
+</group>
+
+
+<group tag="Memory" url="index.html" >
+<!--=======================================================================-->
+ <item tag="pool" url="pool/doc/index.html" />
+ <item tag="smart_ptr" url="smart_ptr/index.html" />
+ <item tag="utility" url="utility/utility.htm" />
+
+</group>
+
+
+<group tag="Miscellaneous" url="index.html" >
+<!--=======================================================================-->
+ <item tag="assign" url="assign/index.html" />
+ <item tag="base from member" url="utility/base_from_member.html" />
+ <item tag="crc" url="crc/index.html" />
+ <item tag="date_time" url="date_time/doc/index.html" />
+ <item tag="filesystem" url="filesystem/doc/index.htm" />
+ <item tag="parameter" url="parameter/doc/html/index.html" />
+ <item tag="preprocesor" url="preprocessor/doc/index.html" />
+ <item tag="python" url="python/doc/index.html" />
+ <item tag="timer" url="timer/index.html" />
+ <item tag="tr1" url="tr1/index.html" />
+ <item tag="statechart" url="statechart/doc/index.html" />
+ <item tag="value_initialized" url="utility/value_init.htm" />
+
+</group>
+
+
+<group tag="Compiler workarounds" url="index.html" >
+<!--=======================================================================-->
+ <item tag="compatibility" url="compatibility/index.html" />
+ <item tag="config" url="config/config.htm" />
+
+</group>
+
+
+
+</groupedLinks>
+

Added: sandbox/doc_test/grouped_links/example/simple/simple.html
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/example/simple/simple.html 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,46 @@
+<!--===========================================================================
+ Copyright (c) 2007 Matias Capeletto
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+============================================================================-->
+
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Boost.GroupedLinks Example</title>
+<link rel="stylesheet" href="../../css/grouped_links.css" type="text/css">
+</head>
+
+<body>
+
+<!-- Include the grouped links java script api -->
+
+<script type="text/javascript" src="../../js/grouped_links.js"></script>
+
+<!-- Add a div with an unique "id" attribute -->
+
+<form id="boost_libs_list">
+
+ <!-- Call the GroupedLinks "select box" with the following parameters
+ (1) GroupedLinks xml definition url
+ (2) form id
+ (3) base url for the links
+ (4) selected item [optional] -->
+
+ <script type="text/javascript">
+
+ grouped_links_select_box('boost_libs.xml',
+ 'boost_libs_list',
+ 'http://www.boost.org/libs/');
+
+ </script>
+
+</form>
+
+</body>
+</html>
+
+

Added: sandbox/doc_test/grouped_links/index.html
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/index.html 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <meta http-equiv="refresh" content="0; URL=doc/html/index.html">
+ </head>
+ <body>
+ Automatic redirection failed, click this
+ link
+ </body>
+</html>

Added: sandbox/doc_test/grouped_links/js/grouped_links.js
==============================================================================
--- (empty file)
+++ sandbox/doc_test/grouped_links/js/grouped_links.js 2007-06-14 04:57:24 EDT (Thu, 14 Jun 2007)
@@ -0,0 +1,189 @@
+/*===========================================================================
+ Copyright (c) 2007 Matias Capeletto
+
+ Use, modification and distribution is subject to the Boost Software
+ License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+===========================================================================*/
+
+/*********************** GroupedLinks API **********************************
+
+In your html body use it like:
+----------------------------------------------------------------------------
+<!-- Include the grouped links java script api
+ Remember to change this line with the path of your grouped_links.js -->
+
+<script type="text/javascript" src="grouped_links.js"></script>
+
+<!-- Add a form with an "id" attribute -->
+
+<form id="boost_libs_list">
+
+ <!-- Call the GroupedLinks "select box" with the following parameters
+ (1) GroupedLinks xml definition url
+ (2) id of the element where the select box will be inserted
+ (3) base url for the links
+ (4) selected item [optional] -->
+
+ <script type="text/javascript">
+
+ grouped_links_select_box('boost_libs_grouped_links.xml',
+ 'boost_libs_list',
+ 'http://www.boost.org/libs/');
+
+ </script>
+
+</form>
+---------------------------------------------------------------------------
+
+Read the html docs for more information.
+
+**************************************************************************/
+
+
+(function() {
+
+// Load an xml file, and pass it to the callback function when it is ready
+
+function asinc_load_xml(url, callback)
+{
+ var XMLHttpRequestObject =
+ window.XMLHttpRequest ? new XMLHttpRequest() :
+ window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") :
+ false;
+
+ if(XMLHttpRequestObject)
+ {
+ XMLHttpRequestObject.open("GET", url);
+ XMLHttpRequestObject.onreadystatechange = function()
+ {
+ // Check for XMLHttpRequestObject.status == 200, it returns 0?
+ if (XMLHttpRequestObject.readyState == 4 )
+ {
+
+ callback(XMLHttpRequestObject.responseXML);
+ delete XMLHttpRequestObject;
+ XMLHttpRequestObject = null;
+ }
+ }
+ XMLHttpRequestObject.send(null);
+ }
+}
+
+// Add the base url if it is relative
+
+function format_url(sUrl,sBaseUrl)
+{
+ if( sUrl.substring(0,7) == 'http://' )
+ {
+ return sUrl;
+ }
+ return sBaseUrl + sUrl;
+}
+
+// Options for drop down list
+
+function construct_html_select_option(sClass,sTag,sUrl,bSelected)
+{
+ return '<option ' + (bSelected ? 'selected ' : '') +
+ 'class="' + sClass + '"' + ' value="' + sUrl + '" >'
+ + sTag + '</option>\n';
+}
+
+function construct_select_option(oXmlElement,sClass,
+ sBaseUrl,sDefaultUrl,sSelected)
+{
+ return construct_html_select_option(
+ sClass,
+ oXmlElement.getAttribute('tag'),
+ oXmlElement.hasAttribute('url') ?
+ format_url(oXmlElement.getAttribute('url'),sBaseUrl) :
+ sDefaultUrl,
+ sSelected == oXmlElement.getAttribute('tag')
+ );
+}
+
+function construct_multiple_select_options(oXmlElements,sClass,
+ sBaseUrl,sDefaultUrl,sSelected)
+{
+ var sOptionsHtml;
+ for(var i = 0; i < oXmlElements.length; i++)
+ {
+ sOptionsHtml += construct_select_option(
+ oXmlElements[i], sClass, sBaseUrl,sDefaultUrl,sSelected
+ );
+ }
+ return sOptionsHtml;
+}
+
+// Populate a select block from an xml and insert the result in sId div
+
+function select_box(sXmlUrl,sId,sBaseUrl,sSelected)
+{
+ asinc_load_xml(sXmlUrl, function(oXml) {
+
+ // manage parameters
+
+ if( sBaseUrl != '' && sBaseUrl.charAt( sBaseUrl.length-1 ) != '/' )
+ {
+ sBaseUrl += '/';
+ }
+ var sDefaultUrl = sBaseUrl + 'index';
+ var oTitles = oXml.getElementsByTagName('title');
+ if( sSelected == null && oTitles.length > 0 )
+ {
+ sSelected = oTitles[0].getAttribute('tag');
+ if( oTitles[0].hasAttribute('url') )
+ {
+ sDefaultUrl = oTitles[0].getAttribute('url');
+ }
+ }
+
+ // Construct the select box
+
+ var sSelectHtml =
+ '<select id="'+sId+'_internal"' +
+ ' class="grouped_links"' +
+ ' size="1"' +
+ ' OnChange="grouped_links_internal_go_to_url(\''+sId+'_internal\')">\n' ;
+
+ sSelectHtml += construct_multiple_select_options(
+ oTitles,
+ 'grouped_links_title', sBaseUrl, sDefaultUrl, sSelected
+ );
+
+ var aGroups = oXml.getElementsByTagName('group');
+ for(var ig = 0; ig < aGroups.length; ig++)
+ {
+ sSelectHtml += construct_select_option(
+ aGroups[ig],
+ 'grouped_links_group', sBaseUrl, sDefaultUrl, sSelected
+ );
+
+ sSelectHtml += construct_multiple_select_options(
+ aGroups[ig].getElementsByTagName('item'),
+ 'grouped_links_item', sBaseUrl, sDefaultUrl, sSelected
+ );
+ }
+
+ sSelectHtml += '</select>\n';
+ document.getElementById(sId).innerHTML = sSelectHtml;
+
+ } );
+}
+
+// Action function used when the user selects an option from the drop down list
+
+function go_to_url(sId)
+{
+ var formindex = document.getElementById(sId).selectedIndex;
+ parent.self.location = document.getElementById(sId).options[formindex].value;
+}
+
+// Api public interface
+
+window["grouped_links_select_box"] = select_box ;
+window["grouped_links_internal_go_to_url" ] = go_to_url ;
+
+})();
+


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk