| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | <?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                version="1.0"><xsl:output method="xml" indent="no"            doctype-public="-//Norman Walsh//DTD Website Autolayout V2.5.0//EN"            doctype-system="http://docbook.sourceforge.net/release/website/2.5.0/schema/dtd/autolayout.dtd"/><xsl:strip-space elements="toc tocentry layout copyright"/><xsl:template match="layout">  <autolayout>    <xsl:text>
</xsl:text>    <xsl:apply-templates/>  </autolayout>  <xsl:text>
</xsl:text></xsl:template><xsl:template match="style|script|headlink|copyright|config">  <xsl:apply-templates select="." mode="copy"/></xsl:template><xsl:template match="*" mode="copy">  <xsl:element name="{name(.)}">    <xsl:copy-of select="@*"/>    <xsl:apply-templates mode="copy"/>  </xsl:element></xsl:template><xsl:template match="toc">  <xsl:if test="not(@page)">    <xsl:message terminate="yes">      <xsl:text>All toc entries must have a page attribute.</xsl:text>    </xsl:message>  </xsl:if>  <xsl:variable name="page" select="document(@page,.)"/>  <toc>    <xsl:call-template name="tocentry"/>  </toc>  <xsl:text>
</xsl:text></xsl:template><xsl:template match="tocentry">  <tocentry>    <xsl:call-template name="tocentry"/>  </tocentry>  <xsl:text>
</xsl:text></xsl:template><xsl:template match="notoc">  <notoc>    <xsl:call-template name="tocentry"/>  </notoc>  <xsl:text>
</xsl:text></xsl:template><xsl:template name="tocentry">  <xsl:if test="@revisionflag">    <xsl:attribute name="revisionflag">      <xsl:value-of select="@revisionflag"/>    </xsl:attribute>  </xsl:if>  <xsl:choose>    <xsl:when test="@href">      <xsl:call-template name="tocentry.href"/>    </xsl:when>    <xsl:otherwise>      <xsl:call-template name="tocentry.page"/>    </xsl:otherwise>  </xsl:choose></xsl:template><xsl:template name="tocentry.href">  <xsl:if test="not(@href)">    <xsl:message terminate="yes">      <xsl:text>All toc entries must have an href attribute.</xsl:text>    </xsl:message>  </xsl:if>  <xsl:if test="not(@id)">    <xsl:message terminate="yes">      <xsl:text>All href toc entries must have an id attribute.</xsl:text>    </xsl:message>  </xsl:if>  <xsl:message>    <xsl:text>off site: </xsl:text>    <xsl:value-of select="@href"/>  </xsl:message>  <xsl:attribute name="id">    <xsl:value-of select="@id"/>  </xsl:attribute>  <xsl:attribute name="href">    <xsl:value-of select="@href"/>  </xsl:attribute>  <xsl:if test="@tocskip = '1'">    <xsl:attribute name="tocskip">      <xsl:value-of select="@tocskip"/>    </xsl:attribute>  </xsl:if>  <xsl:if test="not(title)">    <xsl:message terminate="yes">      <xsl:text>Off-site links must provide a title.</xsl:text>    </xsl:message>  </xsl:if>  <xsl:text>
</xsl:text>  <xsl:apply-templates select="title|titleabbrev|summary" mode="copy"/>  <xsl:text>
</xsl:text>  <xsl:apply-templates select="tocentry"/></xsl:template><xsl:template name="tocentry.page">  <xsl:if test="not(@page)">    <xsl:message terminate="yes">      <xsl:text>All toc entries must have a page attribute.</xsl:text>    </xsl:message>  </xsl:if>  <xsl:variable name="page" select="document(@page,.)"/>  <xsl:if test="not($page/*[1]/@id)">    <xsl:message terminate="yes">      <xsl:value-of select="@page"/>      <xsl:text>: missing ID.</xsl:text>    </xsl:message>  </xsl:if>  <xsl:variable name="id" select="$page/*[1]/@id"/>  <xsl:variable name="filename">    <xsl:choose>      <xsl:when test="@filename">        <xsl:value-of select="@filename"/>      </xsl:when>      <xsl:when test="/layout/config[@param='default-filename']">        <xsl:value-of select="(/layout/config[@param='default-filename'])[1]/@value"/>      </xsl:when>      <xsl:otherwise>index.html</xsl:otherwise>    </xsl:choose>  </xsl:variable>  <xsl:variable name="dir">    <xsl:apply-templates select="." mode="calculate-dir"/>  </xsl:variable>  <xsl:if test="$filename = ''">    <xsl:message terminate="yes">      <xsl:value-of select="@page"/>      <xsl:text>: missing filename.</xsl:text>    </xsl:message>  </xsl:if>  <xsl:message>    <xsl:value-of select="@page"/>    <xsl:text>: </xsl:text>    <xsl:if test="$dir != ''">      <xsl:value-of select="$dir"/>    </xsl:if>    <xsl:value-of select="$filename"/>  </xsl:message>  <xsl:attribute name="page">    <xsl:value-of select="@page"/>  </xsl:attribute>  <xsl:attribute name="id">    <xsl:value-of select="$id"/>  </xsl:attribute>  <xsl:if test="$dir != ''">    <xsl:attribute name="dir">      <xsl:value-of select="$dir"/>    </xsl:attribute>  </xsl:if>  <xsl:attribute name="filename">    <xsl:value-of select="$filename"/>  </xsl:attribute>  <xsl:if test="@tocskip = '1'">    <xsl:attribute name="tocskip">      <xsl:value-of select="@tocskip"/>    </xsl:attribute>  </xsl:if>  <xsl:text>
</xsl:text>  <xsl:choose>    <xsl:when test="title">      <xsl:apply-templates select="title" mode="copy"/>    </xsl:when>    <xsl:otherwise>      <title>        <xsl:apply-templates select="$page/*[1]/head/title"/>      </title>    </xsl:otherwise>  </xsl:choose>  <xsl:text>
</xsl:text>  <xsl:if test="titleabbrev or $page/*[1]/head/titleabbrev">    <xsl:choose>      <xsl:when test="titleabbrev">        <xsl:apply-templates select="titleabbrev" mode="copy"/>      </xsl:when>      <xsl:otherwise>        <titleabbrev>          <xsl:apply-templates select="$page/*[1]/head/titleabbrev"/>        </titleabbrev>      </xsl:otherwise>    </xsl:choose>    <xsl:text>
</xsl:text>  </xsl:if>  <xsl:if test="summary or $page/*[1]/head/summary">    <xsl:choose>      <xsl:when test="summary">        <xsl:apply-templates select="summary" mode="copy"/>      </xsl:when>      <xsl:otherwise>        <summary>          <xsl:apply-templates select="$page/*[1]/head/summary"/>        </summary>      </xsl:otherwise>    </xsl:choose>    <xsl:text>
</xsl:text>  </xsl:if>  <xsl:apply-templates select="tocentry"/></xsl:template><xsl:template match="*" mode="calculate-dir">  <xsl:choose>    <xsl:when test="starts-with(@dir, '/')">      <!-- if the directory on this begins with a "/", we're done... -->      <xsl:value-of select="substring-after(@dir, '/')"/>      <xsl:text>/</xsl:text>    </xsl:when>    <xsl:when test="parent::*">      <!-- if there's a parent, try it -->      <xsl:apply-templates select="parent::*" mode="calculate-dir"/>      <xsl:if test="@dir">        <xsl:value-of select="@dir"/>        <xsl:text>/</xsl:text>      </xsl:if>    </xsl:when>    <xsl:otherwise>      <xsl:if test="@dir">        <xsl:value-of select="@dir"/>        <xsl:text>/</xsl:text>      </xsl:if>    </xsl:otherwise>  </xsl:choose></xsl:template></xsl:stylesheet>
 |