hhc.xsl revision 66e48875fca2df6669dab4f2690ee36c6913c0ff
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<?xml version="1.0"?>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!--
66e48875fca2df6669dab4f2690ee36c6913c0ffnd Copyright 2003-2004 The Apache Software Foundation
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd Licensed under the Apache License, Version 2.0 (the "License");
66e48875fca2df6669dab4f2690ee36c6913c0ffnd you may not use this file except in compliance with the License.
66e48875fca2df6669dab4f2690ee36c6913c0ffnd You may obtain a copy of the License at
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd http://www.apache.org/licenses/LICENSE-2.0
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd Unless required by applicable law or agreed to in writing, software
66e48875fca2df6669dab4f2690ee36c6913c0ffnd distributed under the License is distributed on an "AS IS" BASIS,
66e48875fca2df6669dab4f2690ee36c6913c0ffnd WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
66e48875fca2df6669dab4f2690ee36c6913c0ffnd See the License for the specific language governing permissions and
66e48875fca2df6669dab4f2690ee36c6913c0ffnd limitations under the License.
66e48875fca2df6669dab4f2690ee36c6913c0ffnd-->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!DOCTYPE xsl:stylesheet [
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!ENTITY lf SYSTEM "/xsl/util/lf.xml">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!ENTITY tab SYSTEM "/xsl/util/tab.xml">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!ENTITY ul.start SYSTEM "/xsl/util/ul-start.xml">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!ENTITY ul.end SYSTEM "/xsl/util/ul-end.xml" >
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!ENTITY li.start SYSTEM "/xsl/util/li-start.xml">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!ENTITY li.end SYSTEM "/xsl/util/li-end.xml" >
66e48875fca2df6669dab4f2690ee36c6913c0ffnd]>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:stylesheet version="1.0"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd xmlns="">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- WARNING! Do not touch anything, especially the whitespaces [1] -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- unless you know, what you're doing. The HTML help compiler parses -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- the TOC file not really as html instead of line by line and takes -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- care of whitespace indentations etc. -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- [1] Covered by the &lf; and &tab; entities. -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- You have been warned. -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- create nodeset for referencing later -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="not-exists" select="document('')/xsl:stylesheet/xsl:template
66e48875fca2df6669dab4f2690ee36c6913c0ffnd [@name='data']/not-exists/file" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template name="data">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- documents not converted (yet?). -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<not-exists>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- example: <file>developer/API.xml</file> -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</not-exists>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- Constants used for case translation -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- document() works relative to the xsl (!) file -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="basedir" select="'../../'"/>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- icons -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="icon.document" select="'11'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="icon.document.not-translated" select="'12'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="icon.section" select="'35'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="icon.directive" select="'41'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="icon.commondirective" select="'19'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- this should not happen. this icon is only displayed within the
66e48875fca2df6669dab4f2690ee36c6913c0ffnd toc view of the help workshop (it's a question mark): -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="icon.no-anchor" select="'9'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- for module-translatename -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:include href="/xsl/util/modtrans.xsl"/>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- <sitemap> -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- Create CHM contents file (toc) from sitemap -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- The file is an html style text file (see warning on top) -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template match="/sitemap">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- html head -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;html&gt;&lt;head&gt;</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;title&gt;Apache HTTP Server Documentation&lt;/title&gt;</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;/head&gt;</xsl:text>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;body&gt;</xsl:text>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- toc properties first -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;object type="text/site properties"&gt;</xsl:text>&lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- XXX: that magic value is still obfuscated. Research needed ... -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;param name="Window Styles" value="0x800027"&gt;</xsl:text>&lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;param name="Font" value="</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$toc-font" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>"&gt;</xsl:text>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;/object&gt;</xsl:text>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd&ul.start; &lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!-- index page on top. -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.start;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="object">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="normalize-space($message[@id='apachehttpserver'])" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href" select="'index.html'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="indent" select="'&#9;&#9;'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.end; &lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!-- iterate over the categories in document order -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:for-each select="category">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.start;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="folder">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name" select="normalize-space(title)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>&lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &ul.start; &lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:apply-templates select="page" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:apply-templates select="modulefilelist" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &ul.end; &lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.end; &lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:for-each>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd&ul.end; &lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;/body&gt;&lt;/html&gt;</xsl:text>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /sitemap -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- category/page -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template match="category/page">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd&li.start;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- document entry, if not href attribute, assume it means "sitemap" -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:call-template name="object">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="@href">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="normalize-space(.)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="normalize-space($message[@id='sitemap'])" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:with-param>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="not(@href)">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>sitemap.html</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="contains(@href, '#')">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="substring-before(@href, '#')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="@href"/>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:with-param>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="indent" select="'&#9;&#9;'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- now try to index the sections of the document -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:apply-templates select="self::page" mode="index" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd&li.end; &lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /category/page -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- category/page, mode="index" -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- display all section headings of one page -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template match="category/page" mode="index">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="href.offline">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="string-length(@href) = 0">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>sitemap.html</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="helper.href.offline">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href" select="@href" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:variable>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="xml"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="concat(substring-before($href.offline, '.html'), '.xml')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:if test="not($xml = $not-exists)">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:variable name="xmlfile">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:variable name="metafile"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="document(document(concat($basedir, $xml))/*/@metafile)
66e48875fca2df6669dab4f2690ee36c6913c0ffnd /metafile" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="$metafile/variants/variant[.=$doclang] and not
66e48875fca2df6669dab4f2690ee36c6913c0ffnd ($metafile/variants/variant[.=$doclang]
66e48875fca2df6669dab4f2690ee36c6913c0ffnd /@htmlonly = 'yes')">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="concat($basedir,
66e48875fca2df6669dab4f2690ee36c6913c0ffnd substring-before($xml, '.xml'), $xml-ext)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="concat($basedir, $xml)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:variable>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:variable name="current" select="document($xmlfile)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:if test="count($current/*/*[local-name()='section' or
66e48875fca2df6669dab4f2690ee36c6913c0ffnd local-name()='category']) &gt; 1">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &lf;&tab;&tab;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &ul.start; &lf;&tab;&tab;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:for-each select="$current/*/*[local-name()='section' or
66e48875fca2df6669dab4f2690ee36c6913c0ffnd local-name()='category']">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.start;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="object">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name" select="normalize-space(title)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:if test="@id">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="concat(substring-before($xml, '.xml'),
66e48875fca2df6669dab4f2690ee36c6913c0ffnd '.html#', @id)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:if>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:with-param>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="indent" select="'&#9;&#9;&#9;&#9;'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.end; &lf;&tab;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:for-each>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &ul.end; &lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:if> <!-- count() > 1 -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:if> <!-- xml exists -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /category/page, "index" -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- category/modulefilelist -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- process all listed module files -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template match="category/modulefilelist">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- create a module name translation list for sorting -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="translist">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>-</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:for-each select="modulefile">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:variable name="current"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="document(concat($basedir,'mod/',.))/modulesynopsis" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text> </xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$current/name"/>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text> </xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="module-translatename">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name" select="$current/name"/>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text> -</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:for-each>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:variable>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- put core and mpm_common on top -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:call-template name="toc-entry.mpm">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="current"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="document(concat($basedir, 'mod/', modulefile[starts-with(.,
66e48875fca2df6669dab4f2690ee36c6913c0ffnd 'core.xml')]/text()))/modulesynopsis" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name" select="'core'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:call-template name="toc-entry.mpm">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="current"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="document(concat($basedir, 'mod/', modulefile[starts-with(.,
66e48875fca2df6669dab4f2690ee36c6913c0ffnd 'mpm_common.xml')]/text()))/modulesynopsis" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name" select="'common'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- remaining MPMs -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:for-each select="modulefile">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:sort select="substring-before(substring-after($translist, concat('- ',
66e48875fca2df6669dab4f2690ee36c6913c0ffnd document(concat($basedir, 'mod/', .))/modulesynopsis/name, ' ')), ' -')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:variable name="current"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="document(concat($basedir, 'mod/', .))/modulesynopsis" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:if test="$current/status='MPM' and not($current/name='mpm_common')">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="toc-entry.mpm">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="current" select="$current" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name" select="substring-before(
66e48875fca2df6669dab4f2690ee36c6913c0ffnd substring-after($translist, concat('- ', $current/name, ' ')),
66e48875fca2df6669dab4f2690ee36c6913c0ffnd ' -')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:if>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:for-each>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- normal modules -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:for-each select="modulefile">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:sort select="substring-before(substring-after($translist, concat('- ',
66e48875fca2df6669dab4f2690ee36c6913c0ffnd document(concat($basedir, 'mod/', .))/modulesynopsis/name, ' ')), ' -')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:variable name="current"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="document(concat($basedir, 'mod/', .))/modulesynopsis" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:if test="not($current/status='MPM') and not($current/status='Core')">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="toc-entry.module">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="current" select="$current"/>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:if>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:for-each>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /category/modulefilelist -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- toc-entry.mpm -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- create entry (and initiate subsection entries) of an mpm -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template name="toc-entry.mpm">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="current" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="name" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd&li.start;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:call-template name="object">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="$name='core'">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="normalize-space($message[@id='apachecore'])" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="$name='common'">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="normalize-space($message[@id='apachempmcommon'])" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="normalize-space($message[@id='apachempm'])" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text> </xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$name" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:with-param>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="concat('mod/', $current/name, '.html')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="indent" select="'&#9;&#9;&#9;'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:call-template name="sections-and-directives">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="current" select="$current" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd&li.end; &lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /toc-entry.mpm -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- toc-entry.module -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- create entry (and initiate subsection entries) of a module -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template name="toc-entry.module">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="current"/>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd&li.start;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:call-template name="object">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="normalize-space($message[@id='apachemodule'])" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text> </xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$current/name" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:with-param>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="concat('mod/', $current/name, '.html')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="indent" select="'&#9;&#9;&#9;'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:call-template name="sections-and-directives">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="current" select="$current" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd&li.end; &lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /toc-entry.module -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- sections-and-directives -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- process sections and directives of a module file -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template name="sections-and-directives">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="current" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:if test="count($current/section) &gt; 0 or
66e48875fca2df6669dab4f2690ee36c6913c0ffnd count($current/directivesynopsis) &gt; 0">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &lf;&tab;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &ul.start; &lf;&tab;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!-- sections -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:for-each select="$current/section">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.start;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="object">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name" select="normalize-space(title)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:if test="@id">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="concat('mod/', $current/name, '.html#', @id)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:if>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:with-param>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="indent" select="'&#9;&#9;&#9;&#9;'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.end; &lf;&tab;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:for-each>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!-- directives within the current document -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:for-each select="$current/directivesynopsis[not(@location)]">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:sort select="name" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.start;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="object">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:if test="@type='section'">&lt;</xsl:if>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="name"/>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:if test="@type='section'">&gt;</xsl:if>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="$message[@id='directive']
66e48875fca2df6669dab4f2690ee36c6913c0ffnd /@replace-space-with">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$message[@id='directive']
66e48875fca2df6669dab4f2690ee36c6913c0ffnd /@replace-space-with" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text> </xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="normalize-space($message[@id='directive'])" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:with-param>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="concat('mod/', $current/name, '.html#',
66e48875fca2df6669dab4f2690ee36c6913c0ffnd translate(name, $uppercase, $lowercase))" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="indent" select="'&#9;&#9;&#9;&#9;'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="icon" select="$icon.directive" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.end; &lf;&tab;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:for-each>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <!-- directives described elsewhere -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:for-each select="$current/directivesynopsis[@location]">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:sort select="name" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.start;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="object">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="name">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:if test="@type='section'">&lt;</xsl:if>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="name"/>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:if test="@type='section'">&gt;</xsl:if>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="$message[@id='directive']
66e48875fca2df6669dab4f2690ee36c6913c0ffnd /@replace-space-with">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$message[@id='directive']
66e48875fca2df6669dab4f2690ee36c6913c0ffnd /@replace-space-with" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text> </xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="normalize-space($message[@id='directive'])" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:with-param>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="concat('mod/', @location, '.html#',
66e48875fca2df6669dab4f2690ee36c6913c0ffnd translate(name, $uppercase, $lowercase))" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="indent" select="'&#9;&#9;&#9;&#9;'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="icon" select="$icon.commondirective" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &li.end; &lf;&tab;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:for-each>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd &ul.end; &lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:if> <!-- sections or directives present -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /sections-and-directives -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- object -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- display an <object> and do some magic to select the right content -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template name="object">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="name" select="'? unknown ?'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="href" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="icon" select="$icon.section" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="indent" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="href.offline">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="helper.href.offline">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="href" select="$href" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:variable>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- xml file is expected to have the same basename -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:variable name="xml"
66e48875fca2df6669dab4f2690ee36c6913c0ffnd select="concat(substring-before($href.offline, '.html'), '.xml')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;object type="text/sitemap"&gt;</xsl:text>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:value-of select="$indent" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;param name="Name" value="</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="filter.attval">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="text" select="$name" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>"&gt;</xsl:text>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:value-of select="$indent" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:if test="string-length($href.offline) &gt; 0">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>&lt;param name="Local" value="</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="filter.attval">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="text" select="$href.offline" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>"&gt;</xsl:text>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$indent" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:if>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;param name="ImageNumber" value="</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="string-length($href.offline) &gt; 0">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="contains($href, '#')">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$icon" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:when test="$doclang='en' or
66e48875fca2df6669dab4f2690ee36c6913c0ffnd (not($xml = $not-exists) and
66e48875fca2df6669dab4f2690ee36c6913c0ffnd (document(document(concat($basedir, $xml))
66e48875fca2df6669dab4f2690ee36c6913c0ffnd /*/@metafile)
66e48875fca2df6669dab4f2690ee36c6913c0ffnd /metafile/variants/variant
66e48875fca2df6669dab4f2690ee36c6913c0ffnd [.=$doclang and not(@htmlonly='yes')]))">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$icon.document" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$icon.document.not-translated" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$icon.no-anchor" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>"&gt;</xsl:text>&lf;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:value-of select="substring($indent, 2)" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;/object&gt;</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /object -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- folder -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template name="folder">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="name" select="'? unknown ?'" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;object type="text/sitemap"&gt;</xsl:text>&lf;&tab;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;param name="Name" value="</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="filter.attval">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="text" select="$name" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>"&gt;</xsl:text>&lf;&tab;
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:text>&lt;/object&gt;</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /folder -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- helper.href.offline -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- change uri reference to work offline (/ -> /index.html) -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template name="helper.href.offline">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="href" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:when test="string-length($href) = 0" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:when test="contains($href, '#') and '/' = substring($href,
66e48875fca2df6669dab4f2690ee36c6913c0ffnd string-length(substring-before($href, '#')), 1)">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="substring-before($href, '#')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>index.html#</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="substring-after($href, '#')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:when test="substring($href, string-length($href), 1) = '/'">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$href" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>index.html</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$href" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /helper.href.offline -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- filter.attval -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- escape special characters for being valid within an attribute -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template name="filter.attval">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="text" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:when test="contains($text, '&amp;')">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="filter.attval.special">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="text" select="substring-before($text, '&amp;')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>&amp;amp;</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="filter.attval">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="text" select="substring-after($text, '&amp;')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="filter.attval.special">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="text" select="$text" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /filter.attval -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- filter.attval.special -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- accompanying template of filter.attval -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- ==================================================================== -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:template name="filter.attval.special">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:param name="text" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:when test="contains($text, '&lt;')">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="substring-before($text, '&lt;')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>&amp;lt;</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="filter.attval.special">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="text" select="substring-after($text, '&lt;')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:when test="contains($text, '&gt;')">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="substring-before($text, '&gt;')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>&amp;gt;</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="filter.attval.special">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="text" select="substring-after($text, '&gt;')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:when test="contains($text, '&quot;')">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="substring-before($text, '&quot;')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:text>&amp;quot;</xsl:text>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:call-template name="filter.attval.special">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:with-param name="text" select="substring-after($text, '&quot;')" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd </xsl:call-template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:when>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$text" />
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:otherwise>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:choose>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:template>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<!-- /filter.attval.special -->
66e48875fca2df6669dab4f2690ee36c6913c0ffnd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd</xsl:stylesheet>