quickreference.xsl revision cb7bf5cb76f4c0c5817e2cc6bc97276e425cf165
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<?xml version="1.0"?>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!--
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Copyright 2002-2006 The Apache Software Foundation or its licensors, as
456de5f26ad346749963525a4f91883e6a51c5f3gryzor applicable.
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Licensed under the Apache License, Version 2.0 (the "License");
96ad5d81ee4a2cc66a4ae19893efc8aa6d06fae7jailletc you may not use this file except in compliance with the License.
456de5f26ad346749963525a4f91883e6a51c5f3gryzor You may obtain a copy of the License at
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor http://www.apache.org/licenses/LICENSE-2.0
2e545ce2450a9953665f701bb05350f0d3f26275nd
456de5f26ad346749963525a4f91883e6a51c5f3gryzor Unless required by applicable law or agreed to in writing, software
456de5f26ad346749963525a4f91883e6a51c5f3gryzor distributed under the License is distributed on an "AS IS" BASIS,
456de5f26ad346749963525a4f91883e6a51c5f3gryzor WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
456de5f26ad346749963525a4f91883e6a51c5f3gryzor See the License for the specific language governing permissions and
456de5f26ad346749963525a4f91883e6a51c5f3gryzor limitations under the License.
456de5f26ad346749963525a4f91883e6a51c5f3gryzor-->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!DOCTYPE xsl:stylesheet [
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!ENTITY lf SYSTEM "util/lf.xml">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor]>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<xsl:stylesheet version="1.0"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor xmlns="http://www.w3.org/1999/xhtml">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- ==================================================================== -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- <quickreference> -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- Builds the directive quickreference page -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- ==================================================================== -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<xsl:template match="quickreference">
4a56677aad9b66a36f3dc9fddbca8dc1230ad471rbowen<html xml:lang="{$doclang}" lang="{$doclang}">
4a56677aad9b66a36f3dc9fddbca8dc1230ad471rbowen <xsl:call-template name="head"/>&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <body id="directive-index">&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:call-template name="top"/>&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <div id="preamble">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <h1>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:value-of select="title" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </h1>&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:call-template name="langavail" />&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:apply-templates select="summary" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </div>&lf; <!-- /#preamble -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <div id="directive-ref">
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:variable name="directives"
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar select="document(document($allmodules)/modulefilelist/modulefile)
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar /modulesynopsis/directivesynopsis[not(@location)]" />
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:variable name="start-letters">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:call-template name="directive-startletters">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:with-param name="directives" select="$directives" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:call-template>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:variable>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <table id="legend">&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <tr>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <td class="letters">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <span>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:call-template name="letter-bar">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:with-param name="letters"
456de5f26ad346749963525a4f91883e6a51c5f3gryzor select="$start-letters" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:with-param name="first" select="true()" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:call-template>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </span>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </td>&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:apply-templates select="legend/table[position()=1]" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </td>&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:apply-templates select="legend/table[position()=2]" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </tr>&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </table>&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <table class="qref">&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:call-template name="reference-of-letter">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:with-param name="letters-todo" select="$start-letters" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:with-param name="offset" select="number(0)" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:with-param name="directives" select="$directives" />
20f499565e77defe9dab24dd85c02f38a1175855nd </xsl:call-template>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </table>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </div>&lf; <!-- /#directive-ref -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:call-template name="bottom"/>&lf;
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </body>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor</html>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor</xsl:template>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- /quickreference -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- ==================================================================== -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- the working horse. builds rows of all directives starting with one -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- letter when done, it calls itself to catch the next letter -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<!-- ==================================================================== -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<xsl:template name="reference-of-letter">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<xsl:param name="letters-todo" />
4aa603e6448b99f9371397d439795c91a93637eand<xsl:param name="offset" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<xsl:param name="directives" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<xsl:variable name="letter" select="substring($letters-todo, 1, 1)" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<xsl:for-each
456de5f26ad346749963525a4f91883e6a51c5f3gryzor select="$directives[$letter=translate(substring(normalize-space(name), 1,1),
456de5f26ad346749963525a4f91883e6a51c5f3gryzor $lowercase,$uppercase)]">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor<xsl:sort select="name" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <tr>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:if test="position() mod 2 = $offset">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:attribute name="class">odd</xsl:attribute>
4aa603e6448b99f9371397d439795c91a93637eand </xsl:if>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <a href="{/name}.html#{translate(name, $uppercase, $lowercase)}">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:if test="position()=1">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:attribute name="id">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:value-of select="$letter" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:attribute>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:attribute name="name">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:value-of select="$letter" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:attribute>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:if>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:apply-templates select="syntax" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </a>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- if the default value contains (at least) one <br />, -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- this probably means that a short explanation follows -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- the actual default value. We cut off the string -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- after the <br /> so it will not be shown here. -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <!-- (add the + character instead) -->
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:variable name="default">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:choose>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:when test="count(default[count(br) &gt; 0]) &gt; 0">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:value-of
456de5f26ad346749963525a4f91883e6a51c5f3gryzor select="default/child::node()
456de5f26ad346749963525a4f91883e6a51c5f3gryzor [count(preceding-sibling::*) = 0]" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:when>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:otherwise>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:value-of select="default"/>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:otherwise>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:choose>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:variable>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:value-of select="substring(substring-after(concat($default,
456de5f26ad346749963525a4f91883e6a51c5f3gryzor ' '), name),1,20)" />
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:if test="string-length(substring-after(concat($default, ' '),
456de5f26ad346749963525a4f91883e6a51c5f3gryzor name)) &gt; 20
456de5f26ad346749963525a4f91883e6a51c5f3gryzor or count(default[count(br) &gt; 0]) &gt; 0">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:text> +</xsl:text>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:if>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:if test="contextlist/context
456de5f26ad346749963525a4f91883e6a51c5f3gryzor [normalize-space(.)='server config']">s</xsl:if>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:if test="contextlist/context
456de5f26ad346749963525a4f91883e6a51c5f3gryzor [normalize-space(.)='virtual host']">v</xsl:if>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:if test="contextlist/context
456de5f26ad346749963525a4f91883e6a51c5f3gryzor [normalize-space(.)='directory']">d</xsl:if>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:if test="contextlist/context
456de5f26ad346749963525a4f91883e6a51c5f3gryzor [normalize-space(.)='.htaccess']">h</xsl:if>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:choose>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:when test="/status='Base'">B</xsl:when>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:when test="/status='MPM'">M</xsl:when>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:when test="/status='Core'">C</xsl:when>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:when test="/status='Extension'">E</xsl:when>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:when test="/status='Experimental'">X</xsl:when>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:when test="/status='External'">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:choose>
4aa603e6448b99f9371397d439795c91a93637eand <xsl:when test="/status/@href">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <a href="{/status/@href}">T</a>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:when>
82acb2833a1071ce9818a5cc295a472ec57ad4c2lgentis <xsl:otherwise>T</xsl:otherwise>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:choose>
4aa603e6448b99f9371397d439795c91a93637eand </xsl:when>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:choose>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </td>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </tr>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <tr>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:if test="position() mod 2 = $offset">
456de5f26ad346749963525a4f91883e6a51c5f3gryzor <xsl:attribute name="class">odd</xsl:attribute>
456de5f26ad346749963525a4f91883e6a51c5f3gryzor </xsl:if>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <td colspan="4" class="descr">
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:choose>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:when test="string-length(normalize-space(description)) &gt; 0">
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:apply-templates select="description"/>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </xsl:when>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:otherwise>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:text>-</xsl:text>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </xsl:otherwise>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </xsl:choose>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </td>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </tr>&lf;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar</xsl:for-each> <!-- /directives -->
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar<!-- call next letter, if there is -->
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar<xsl:if test="string-length($letters-todo) &gt; 1">
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:call-template name="reference-of-letter">
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:with-param name="letters-todo"
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar select="substring($letters-todo, 2)" />
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:with-param name="offset"
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar select="(count($directives[$letter=translate(substring(
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar normalize-space(name), 1, 1), $lowercase, $uppercase)])
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar + $offset) mod 2" />
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <xsl:with-param name="directives" select="$directives" />
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </xsl:call-template>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar</xsl:if>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar</xsl:template>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar<!-- /reference-of-letter -->
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar</xsl:stylesheet>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar