--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet [
+ <!ENTITY lf SYSTEM "../xsl/util/lf.xml">
+ <!ENTITY tab SYSTEM "../xsl/util/tab.xml">
+]>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!--
+ XXX: WARNING! Do not touch anything, especially the whitespaces [1] unless
+ you know, what you're doing. The HTML help compiler parses the TOC file
+ not really as html instead of line by line and takes care of whitespace
+ indentations etc.
+
+ [1] Covered by the &lf; and &tab; entities.
+
+ You have been warned.
+-->
+
+<!-- documents not converted (yet?). -->
+<xsl:variable name="not-existing">
+ developer/API.xml
+
+ programs/ab.xml
+ programs/apxs.xml
+ programs/dbmmanage.xml
+ programs/htdigest.xml
+ programs/htpasswd.xml
+ programs/logresolve.xml
+ programs/rotatelogs.xml
+ programs/suexec.xml
+ programs/other.xml
+</xsl:variable>
+
+<!-- Constants used for case translation -->
+<xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
+<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
+
+<!-- document() works relative to the xsl (!) file -->
+<xsl:variable name="basedir" select="'../../'"/>
+
+<!-- icons -->
+<xsl:variable name="icon.document" select="'11'" />
+<xsl:variable name="icon.document.not-translated" select="'12'" />
+<xsl:variable name="icon.section" select="'35'" />
+<xsl:variable name="icon.directive" select="'41'" />
+<xsl:variable name="icon.commondirective" select="'19'" />
+
+<!-- for module-translatename -->
+<xsl:include href="../xsl/util/modtrans.xsl"/>
+
+<!-- -->
+<!-- <sitemap> -->
+<!-- Process an entire document into an HTML page -->
+<!-- -->
+<xsl:template match="/sitemap">
+<xsl:text><html><head></xsl:text>
+<xsl:text><title>TOC - Apache HTTP Server Documentation</title></xsl:text>
+<xsl:text></head></xsl:text>&lf;
+
+<xsl:text><body></xsl:text>&lf;
+
+<!-- toc properties first -->
+<xsl:text>
+<object type="text/site properties">
+	<param name="Window Styles" value="0x800027">
+	<param name="Font" value="</xsl:text>
+ <xsl:value-of select="$toc-font" />
+<xsl:text>"></xsl:text>&lf;
+<xsl:text></object></xsl:text>&lf;
+
+<xsl:text><ul></xsl:text>&lf;
+
+<!-- index page on top. -->
+<xsl:text><li><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;
+
+ <xsl:text><param name="Name" value="</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text" select="$messages/message[@name='apachehttpserver']" />
+ </xsl:call-template>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;
+
+ <xsl:text><param name="Local" value="</xsl:text>
+ <xsl:value-of select="'index.html'" />
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;
+
+ <xsl:text><param name="ImageNumber" value="</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$messages/@lang='en' or (document(document(concat($basedir, 'index.xml'))/*/@metafile)/metafile/variants/variant[.=$messages/@lang and not(@htmlonly='yes')])">
+ <xsl:value-of select="$icon.document" />
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$icon.document.not-translated" />
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"></xsl:text>&lf;&tab;
+
+ <xsl:text></object></li></xsl:text>&lf;
+
+<xsl:for-each select="category">
+
+<xsl:text><li><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;
+
+ <xsl:text><param name="Name" value="</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text" select="normalize-space(title)" />
+ </xsl:call-template>
+ <xsl:text>"></xsl:text>&lf;&tab;
+ <xsl:text></object></xsl:text>&lf;&tab;
+
+ <xsl:text><ul></xsl:text>&lf;&tab;
+
+ <xsl:for-each select="page">
+
+ <xsl:variable name="local"><xsl:choose>
+ <xsl:when test="not(@href)">
+ <xsl:text>sitemap.html</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="contains(@href, '#') and substring(@href, string-length(substring-before(@href, '#')), 1) = '/'">
+ <xsl:value-of select="substring-before(@href, '#')" />
+ <xsl:text>index.html</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="substring(@href,string-length(@href),1) = '/'">
+ <xsl:value-of select="@href"/>
+ <xsl:text>index.html</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise><xsl:value-of select="@href"/></xsl:otherwise></xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="xmlfile-en" select="concat(substring-before($local, '.html'), '.xml')"/>
+ <xsl:variable name="xmlfile-exists" select="boolean(not(contains(concat(' ', normalize-space($not-existing), ' '), concat(' ', $xmlfile-en, ' '))))"/>
+
+ <xsl:text><li><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;
+
+ <xsl:text><param name="Name" value="</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text">
+ <xsl:if test="@href">
+ <xsl:value-of select="normalize-space(.)" />
+ </xsl:if>
+ <xsl:if test="not(@href)">
+ <xsl:value-of select="normalize-space($messages/message[@name='sitemap'])" />
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;
+
+ <xsl:text><param name="Local" value="</xsl:text>
+ <xsl:choose>
+ <xsl:when test="not(@href)">
+ <xsl:text>sitemap.html</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="contains(@href, '#') and substring(@href, string-length(substring-before(@href, '#')), 1) = '/'">
+ <xsl:value-of select="substring-before(@href, '#')" />
+ <xsl:text>index.html#</xsl:text>
+ <xsl:value-of select="substring-after(@href, '#')" />
+ </xsl:when>
+
+ <xsl:when test="substring(@href,string-length(@href),1) = '/'">
+ <xsl:value-of select="@href"/>
+ <xsl:text>index.html</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise><xsl:value-of select="@href"/></xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;
+
+ <xsl:text><param name="ImageNumber" value="</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$messages/@lang='en' or ($xmlfile-exists and document(document(concat($basedir, $xmlfile-en))/*/@metafile)/metafile/variants/variant[.=$messages/@lang and not(@htmlonly='yes')])">
+ <xsl:value-of select="$icon.document" />
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$icon.document.not-translated" />
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;
+ <xsl:text></object></xsl:text>
+
+ <xsl:if test="$xmlfile-exists">
+ <xsl:variable name="metafile" select="document(document(concat($basedir, $xmlfile-en))/*/@metafile)/metafile" />
+ <xsl:if test="not($metafile/variants/variant[.=$messages/@lang] and $metafile/variants/variant[.=$messages/@lang]/@htmlonly = 'yes')">
+ <xsl:variable name="xmlfile"><xsl:choose>
+ <xsl:when test="$metafile/variants/variant[.=$messages/@lang]">
+ <xsl:value-of select="concat($basedir, substring-before($local, '.html'), $xml-ext)" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat($basedir, substring-before($local, '.html'), '.xml')" />
+ </xsl:otherwise></xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="current" select="document($xmlfile)" />
+ <xsl:if test="count($current/*/*[local-name()='section' or local-name()='category']) > 1">&lf;&tab;&tab;&tab;
+
+ <xsl:text><ul></xsl:text>&lf;&tab;&tab;&tab;
+
+ <xsl:for-each select="$current/*/*[local-name()='section' or local-name()='category']">
+ <xsl:text><li><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+ <xsl:text><param name="Name" value="</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text" select="normalize-space(title)" />
+ </xsl:call-template>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+
+ <xsl:if test="@id">
+ <xsl:text><param name="Local" value="</xsl:text>
+ <xsl:value-of select="$local" />
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@id" />
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+ </xsl:if>
+
+ <xsl:text><param name="ImageNumber" value="</xsl:text>
+ <xsl:if test="@id"><xsl:value-of select="$icon.section" /></xsl:if>
+ <xsl:if test="not(@id)">9</xsl:if> <!-- "?" -->
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;
+ <xsl:text></object></li></xsl:text>&lf;&tab;&tab;
+ </xsl:for-each>
+ <xsl:text></ul></xsl:text>&lf;&tab;
+ </xsl:if> <!-- count() > 1 -->
+ </xsl:if> <!-- $xml-ext exists -->
+ </xsl:if> <!-- xml exists -->
+ <xsl:text></li></xsl:text>&lf;&tab;
+ </xsl:for-each> <!-- / page -->
+
+ <xsl:apply-templates select="modulefilelist"/>
+ <xsl:text></ul></xsl:text>&lf;
+ <xsl:text></li></xsl:text>&lf;&tab;
+</xsl:for-each>&lf;
+
+<xsl:text></ul></xsl:text>&lf;
+
+<xsl:text></body></html></xsl:text>&lf;
+
+</xsl:template>
+
+<xsl:template match="category/modulefilelist">
+
+ <!-- create our own translation list first -->
+ <xsl:variable name="translist">
+ <xsl:text>-</xsl:text>
+
+ <xsl:for-each select="modulefile">
+ <xsl:variable name="current" select="document(concat($basedir,'mod/',.))/modulesynopsis" />
+
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$current/name"/>
+ <xsl:text> </xsl:text>
+ <xsl:call-template name="module-translatename">
+ <xsl:with-param name="name" select="$current/name"/>
+ </xsl:call-template>
+ <xsl:text> -</xsl:text>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <!-- put core and mpm_common on top -->
+ <xsl:call-template name="toc-entry.mpm">
+ <xsl:with-param name="current" select="document(concat($basedir, 'mod/', modulefile[starts-with(.,'core.xml')]/text()))/modulesynopsis"/>
+ <xsl:with-param name="name" select="'core'"/>
+ </xsl:call-template>
+
+ <xsl:call-template name="toc-entry.mpm">
+ <xsl:with-param name="current" select="document(concat($basedir, 'mod/', modulefile[starts-with(.,'mpm_common.xml')]/text()))/modulesynopsis"/>
+ <xsl:with-param name="name" select="'common'"/>
+ </xsl:call-template>
+
+ <xsl:for-each select="modulefile">
+ <xsl:sort select="substring-before(substring-after($translist, concat('- ', document(concat($basedir,'mod/',.))/modulesynopsis/name, ' ')), ' -')"/>
+
+ <xsl:variable name="current" select="document(concat($basedir, 'mod/', .))/modulesynopsis" />
+
+ <xsl:if test="$current/status='MPM' and $current/name!='mpm_common'">
+ <xsl:call-template name="toc-entry.mpm">
+ <xsl:with-param name="current" select="$current"/>
+ <xsl:with-param name="name" select="substring-before(substring-after($translist, concat('- ', $current/name, ' ')), ' -')"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each> <!-- /mpm -->
+
+ <xsl:for-each select="modulefile">
+ <xsl:sort select="substring-before(substring-after($translist, concat('- ', document(concat($basedir,'mod/',.))/modulesynopsis/name, ' ')), ' -')"/>
+
+ <xsl:variable name="current" select="document(concat($basedir, 'mod/', .))/modulesynopsis" />
+
+ <xsl:if test="$current/status!='MPM' and $current/status!='Core'">
+ <xsl:call-template name="toc-entry.module">
+ <xsl:with-param name="current" select="$current"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each> <!-- /modules -->
+
+</xsl:template>
+
+<xsl:template name="toc-entry.mpm">
+<xsl:param name="current"/>
+<xsl:param name="name"/>
+
+ <xsl:text><li><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;&tab;
+ <xsl:text><param name="Name" value="</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text"><xsl:choose>
+ <xsl:when test="$name='core'">
+ <xsl:value-of select="$messages/message[@name='apachecore']"/>
+ </xsl:when>
+
+ <xsl:when test="$name='common'">
+ <xsl:value-of select="$messages/message[@name='apachempmcommon']"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$messages/message[@name='apachempm']"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise></xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;
+
+ <xsl:text><param name="Local" value="</xsl:text>
+ <xsl:value-of select="concat('mod/', $current/name, '.html')" />
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;
+
+ <xsl:text><param name="ImageNumber" value="</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$messages/@lang='en' or (document($current/@metafile)/metafile/variants/variant[.=$messages/@lang and not(@htmlonly='yes')])">
+ <xsl:value-of select="$icon.document" />
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$icon.document.not-translated" />
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;
+ <xsl:text></object></xsl:text>
+
+ <xsl:call-template name="sections-and-directives">
+ <xsl:with-param name="current" select="$current" />
+ </xsl:call-template>
+ <xsl:text></li></xsl:text>&lf;&tab;
+</xsl:template>
+
+<xsl:template name="toc-entry.module">
+<xsl:param name="current"/>
+
+ <xsl:text><li><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;&tab;
+ <xsl:text><param name="Name" value="</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text">
+ <xsl:value-of select="$messages/message[@name='apachemodule']"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$current/name"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;
+
+ <xsl:text><param name="Local" value="</xsl:text>
+ <xsl:value-of select="concat('mod/', $current/name, '.html')" />
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;
+
+ <xsl:text><param name="ImageNumber" value="</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$messages/@lang='en' or (document($current/@metafile)/metafile/variants/variant[.=$messages/@lang and not(@htmlonly='yes')])">
+ <xsl:value-of select="$icon.document" />
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$icon.document.not-translated" />
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;
+ <xsl:text></object></xsl:text>
+
+ <xsl:call-template name="sections-and-directives">
+ <xsl:with-param name="current" select="$current" />
+ </xsl:call-template>
+ <xsl:text></li></xsl:text>&lf;&tab;
+</xsl:template>
+
+<xsl:template name="sections-and-directives">
+<xsl:param name="current" />
+
+ <xsl:if test="count($current/section) > 0 or count($current/directivesynopsis) > 0">
+ &lf;&tab;&tab;
+
+ <xsl:text><ul></xsl:text>&lf;&tab;&tab;
+
+ <xsl:for-each select="$current/section">
+ <xsl:text><li><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+ <xsl:text><param name="Name" value="</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text" select="normalize-space(title)" />
+ </xsl:call-template>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+
+ <xsl:if test="@id">
+ <xsl:text><param name="Local" value="</xsl:text>
+ <xsl:value-of select="concat('mod/', $current/name, '.html')" />
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="@id" />
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+ </xsl:if>
+
+ <xsl:text><param name="ImageNumber" value="</xsl:text>
+ <xsl:if test="@id"><xsl:value-of select="$icon.section"/></xsl:if>
+ <xsl:if test="not(@id)">9</xsl:if> <!-- "?" -->
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;
+ <xsl:text></object></li></xsl:text>&lf;&tab;&tab;
+ </xsl:for-each> <!-- sections -->
+
+ <xsl:for-each select="$current/directivesynopsis[not(@location)]">
+ <xsl:sort select="name"/>
+
+ <xsl:variable name="lowername" select="translate(name, $uppercase, $lowercase)"/>
+
+ <xsl:text><li><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+ <xsl:text><param name="Name" value="</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text">
+ <xsl:if test="@type='section'"><</xsl:if>
+ <xsl:value-of select="name"/>
+ <xsl:if test="@type='section'">></xsl:if>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$messages/message[@name='directive']"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+
+ <xsl:text><param name="Local" value="</xsl:text>
+ <xsl:value-of select="concat('mod/',$current/name,'.html')" />
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="$lowername" />
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+
+ <xsl:text><param name="ImageNumber" value="</xsl:text>
+ <xsl:value-of select="$icon.directive" />
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;
+ <xsl:text></object></li></xsl:text>&lf;&tab;&tab;
+ </xsl:for-each> <!-- directivesynopsis -->
+
+ <xsl:for-each select="$current/directivesynopsis[@location]">
+ <xsl:sort select="name"/>
+
+ <xsl:variable name="lowername" select="translate(name, $uppercase, $lowercase)"/>
+
+ <xsl:text><li><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+ <xsl:text><param name="Name" value="</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text">
+ <xsl:if test="@type='section'"><</xsl:if>
+ <xsl:value-of select="name"/>
+ <xsl:if test="@type='section'">></xsl:if>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$messages/message[@name='directive']"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+
+ <xsl:text><param name="Local" value="</xsl:text>
+ <xsl:value-of select="concat('mod/',@location,'.html')" />
+ <xsl:text>#</xsl:text>
+ <xsl:value-of select="$lowername" />
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;&tab;
+
+ <xsl:text><param name="ImageNumber" value="</xsl:text>
+ <xsl:value-of select="$icon.commondirective" />
+ <xsl:text>"></xsl:text>&lf;&tab;&tab;&tab;
+ <xsl:text></object></li></xsl:text>&lf;&tab;&tab;
+ </xsl:for-each> <!-- directivesynopsis -->
+
+ <xsl:text></ul></xsl:text>&lf;&tab;
+ </xsl:if> <!-- sections or directives present -->
+
+</xsl:template>
+
+<xsl:template name="filter.attval">
+<xsl:param name="text"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($text, '&')">
+ <xsl:call-template name="filter.attval.special">
+ <xsl:with-param name="text" select="substring-before($text, '&')"/>
+ </xsl:call-template>
+ <xsl:text>&amp;</xsl:text>
+ <xsl:call-template name="filter.attval">
+ <xsl:with-param name="text"
+ select="substring-after($text, '&')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:call-template name="filter.attval.special">
+ <xsl:with-param name="text" select="$text"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="filter.attval.special">
+<xsl:param name="text"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($text, '<')">
+ <xsl:value-of select="substring-before($text, '<')"/>
+ <xsl:text>&lt;</xsl:text>
+ <xsl:call-template name="filter.attval.special">
+ <xsl:with-param name="text"
+ select="substring-after($text, '<')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="contains($text, '>')">
+ <xsl:value-of select="substring-before($text, '>')"/>
+ <xsl:text>&gt;</xsl:text>
+ <xsl:call-template name="filter.attval.special">
+ <xsl:with-param name="text"
+ select="substring-after($text, '>')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:when test="contains($text, '"')">
+ <xsl:value-of select="substring-before($text, '"')"/>
+ <xsl:text>&quot;</xsl:text>
+ <xsl:call-template name="filter.attval.special">
+ <xsl:with-param name="text"
+ select="substring-after($text, '"')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
+
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE xsl:stylesheet
+ [ <!ENTITY lf SYSTEM "../xsl/util/lf.xml"> ]
+>
+
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<!-- -->
+<!-- <sitemap> -->
+<!-- Process an entire document into an HTML page -->
+<!-- -->
+<xsl:template match="/sitemap">
+
+<!-- static information -->
+<!-- ================== -->
+
+ <xsl:text>[OPTIONS]</xsl:text>&lf;
+ <xsl:text>Binary TOC=No</xsl:text>&lf;
+ <xsl:text>Compatibility=1.0</xsl:text>&lf;
+
+ <!-- e.g. manual.en.chm -->
+ <xsl:text>Compiled file=..\manual.</xsl:text>
+ <xsl:value-of select="$messages/@lang" />
+ <xsl:text>.chm</xsl:text>&lf;
+
+ <xsl:text>Contents file=toc.hhc</xsl:text>&lf;
+ <xsl:text>Default Window=Main</xsl:text>&lf;
+ <xsl:text>Default topic=index.html</xsl:text>&lf;
+
+ <!-- compiler related -->
+ <xsl:text>Display compile progress=Yes</xsl:text>&lf;
+ <xsl:text>Enhanced decompilation=Yes</xsl:text>&lf;
+
+ <!-- search related -->
+ <xsl:text>Full-text search=Yes</xsl:text>&lf;
+ <xsl:text>Language=</xsl:text>
+ <xsl:value-of select="$hhp-lang" />&lf;
+
+ <!-- title of the help file -->
+ <xsl:text>Title=</xsl:text>
+ <xsl:value-of select="$messages/message[@name='apachehttpserver']"/>&lf;
+
+ &lf;
+
+ <!-- window definition -->
+ <!-- (don't care about the magic values, they are mostly generated -->
+ <!-- from the HTML Help workshop) -->
+ <xsl:text>[WINDOWS]</xsl:text>&lf;
+ <xsl:text>Main=</xsl:text>
+
+ <!-- title -->
+ <xsl:text>"</xsl:text>
+ <xsl:value-of select="$messages/message[@name='apachehttpserver']"/>
+ <xsl:text>",</xsl:text>
+
+ <!-- toc file -->
+ <xsl:text>"toc.hhc",</xsl:text>
+
+ <!-- index file (currently none) -->
+ <xsl:text>,</xsl:text>
+
+ <!-- default file (startup) -->
+ <xsl:text>"index.html",</xsl:text>
+
+ <!-- Home button file -->
+ <xsl:text>"index.html",</xsl:text>
+
+ <!-- Jump 1 url, text -->
+ <xsl:text>,,</xsl:text>
+
+ <!-- Jump 2 url, text -->
+ <xsl:text>,,</xsl:text>
+
+ <!-- navigation pane style, initial width (px) -->
+ <xsl:text>0x1e357e,180,</xsl:text>
+
+ <!-- button mask -->
+ <xsl:text>0x10305e,</xsl:text>
+
+ <!-- Initial Position [Left, Top, Right, Bottom] -->
+ <xsl:text>[0,0,600,380],</xsl:text>
+
+ <!-- style, extended style -->
+ <xsl:text>0xb7cf0000,,</xsl:text>
+
+ <!-- flag: navigation initial closed (=1) -->
+ <xsl:text>,</xsl:text>
+
+ <!-- unknown -->
+ <xsl:text>,</xsl:text>
+
+ <!-- default pane -->
+ <xsl:text>,</xsl:text>
+
+ <!-- unknown, unknown -->
+ <xsl:text>,0</xsl:text>&lf;
+
+ &lf;
+
+<!-- file list -->
+<!-- ========= -->
+ <xsl:text>[FILES]</xsl:text>&lf;
+
+ <!-- not automatically sucked in. (because only @import()ed) -->
+ <xsl:text>style\css\manual.css</xsl:text>&lf;
+ <xsl:text>style\css\manual-loose-100pc.css</xsl:text>&lf;
+
+ <!-- include project file itself for easier recompiling -->
+ <xsl:text>manual.hhp</xsl:text>&lf;
+
+ <xsl:for-each select="category">
+ <xsl:for-each select="page[@href]">
+ <xsl:variable name="local"><xsl:choose>
+ <xsl:when test="contains(@href, '#') and substring(@href, string-length(substring-before(@href, '#')), 1) = '/'">
+ <xsl:value-of select="substring-before(@href, '#')" />
+ <xsl:text>index.html</xsl:text>
+ </xsl:when>
+
+ <xsl:when test="substring(@href,string-length(@href),1) = '/'">
+ <xsl:value-of select="@href"/>
+ <xsl:text>index.html</xsl:text>
+ </xsl:when>
+
+ <xsl:otherwise><xsl:value-of select="@href"/></xsl:otherwise></xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="back-slash">
+ <xsl:with-param name="file" select="$local"/>
+ </xsl:call-template>&lf;
+ </xsl:for-each> <!-- / page -->
+
+ <xsl:apply-templates select="modulefilelist"/>
+ </xsl:for-each>&lf;
+
+</xsl:template>
+
+<!-- module files -->
+<xsl:template match="category/modulefilelist">
+ <xsl:for-each select="modulefile">
+ <xsl:text>mod\</xsl:text>
+ <xsl:value-of select="substring-before(normalize-space(.), '.xml')"/>
+ <xsl:text>.html</xsl:text>&lf;
+ </xsl:for-each>
+</xsl:template>
+
+<!-- turn slashes to backslashes -->
+<xsl:template name="back-slash">
+<xsl:param name="file"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($file, '/')">
+ <xsl:value-of select="substring-before($file, '/')"/>
+ <xsl:text>\</xsl:text>
+
+ <xsl:call-template name="back-slash">
+ <xsl:with-param name="file" select="substring-after($file, '/')"/>
+ </xsl:call-template>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:value-of select="$file"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>