grim/purple-objects-docbook

Changed from refsect's to chapters. This makes our TOC be number and so on.
Added a revision history as a separate page
Other misc changes
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="common.xsl"/>
<xsl:variable name="abstract-color" select="'palegreen'"/>
<xsl:variable name="concrete-color" select="'lightpink'"/>
<xsl:variable name="interface-color" select="'powderblue'"/>
<xsl:variable name="boxed-color" select="'lightyellow'"/>
<xsl:variable name="default-arrow" select="'normal'"/>
<xsl:variable name="is-a-arrow" select="'onormal'"/>
<xsl:variable name="has-a-arrow" select="'odiamond'"/>
<xsl:variable name="implements-arrow" select="'odot'"/>
<!-- object template -->
<xsl:template name="object">
<xsl:value-of select="@name"/>
<xsl:text>[</xsl:text>
<xsl:if test="@label">
<xsl:text>label="</xsl:text>
<xsl:value-of select="@label"/>
<xsl:text>"</xsl:text>
<xsl:if test="@type">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:if>
<xsl:if test="@type">
<xsl:text>fillcolor="</xsl:text>
<xsl:choose>
<xsl:when test="@type = 'abstract'">
<xsl:value-of select="$abstract-color"/>
</xsl:when>
<xsl:when test="@type = 'concrete'">
<xsl:value-of select="$concrete-color"/>
</xsl:when>
<xsl:when test="@type = 'interface'">
<xsl:value-of select="$interface-color"/>
</xsl:when>
<xsl:when test="@type = 'boxed'">
<xsl:value-of select="$boxed-color"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>wtf</xsl:text>
</xsl:otherwise>
</xsl:choose>
<xsl:text>"</xsl:text>
</xsl:if>
<xsl:text>];</xsl:text>
<xsl:value-of select="$newline-tab"/>
</xsl:template>
<!-- relation template -->
<xsl:template name="relation">
<xsl:value-of select="@start"/>
<xsl:text> -&gt; </xsl:text>
<xsl:value-of select="@end"/>
<xsl:if test="@type">
<xsl:text>[arrowhead="</xsl:text>
<xsl:choose>
<xsl:when test="@type = 'is-a'">
<xsl:value-of select="$is-a-arrow"/>
</xsl:when>
<xsl:when test="@type = 'has-a'">
<xsl:value-of select="$has-a-arrow"/>
</xsl:when>
<xsl:when test="@type = 'implements'">
<xsl:value-of select="$implements-arrow"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$default-arrow"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>"]</xsl:text>
</xsl:if>
<xsl:text>;</xsl:text>
<xsl:value-of select="$newline-tab"/>
</xsl:template>
<!-- main template -->
<xsl:template match="hierarchy">
<!-- start the diagram -->
<xsl:text>digraph {</xsl:text>
<xsl:value-of select="$newline-tab"/>
<!-- output some basic stuff -->
<xsl:text>label="</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>";</xsl:text>
<xsl:value-of select="$newline-tab"/>
<xsl:text>labelloc="t";</xsl:text>
<xsl:value-of select="$newline-tab"/>
<xsl:text>splines=true;</xsl:text>
<xsl:value-of select="$newline-tab"/>
<xsl:text>overlap=false;</xsl:text>
<xsl:value-of select="$newline-tab"/>
<xsl:text>rankdir="tb";</xsl:text>
<xsl:value-of select="$newline"/>
<xsl:value-of select="$newline-tab"/>
<!-- set our global node settings -->
<xsl:text>node[fontname="sans", fontsize="9", shape="rect", style="filled"];</xsl:text>
<xsl:value-of select="$newline"/>
<xsl:value-of select="$newline-tab"/>
<!-- run through our objects -->
<xsl:for-each select="objects/object">
<xsl:call-template name="object"/>
</xsl:for-each>
<xsl:value-of select="$newline-tab"/>
<!-- run through our relations -->
<xsl:for-each select="relations/relation">
<xsl:call-template name="relation"/>
</xsl:for-each>
<!-- finish up -->
<xsl:value-of select="$newline"/>
<xsl:text>}</xsl:text>
<xsl:value-of select="$newline"/>
</xsl:template>
</xsl:stylesheet>