2N/A<?
xml version="1.0"?>
<!-- 2N/A/* ==================================================================== 2N/A * The Apache Software License, Version 1.1 2N/A * Copyright (c) 2002-2004 The Apache Software Foundation. All rights 2N/A * Redistribution and use in source and binary forms, with or without 2N/A * modification, are permitted provided that the following conditions 2N/A * 1. Redistributions of source code must retain the above copyright 2N/A * notice, this list of conditions and the following disclaimer. 2N/A * 2. Redistributions in binary form must reproduce the above copyright 2N/A * notice, this list of conditions and the following disclaimer in 2N/A * the documentation and/or other materials provided with the 2N/A * 3. The end-user documentation included with the redistribution, 727N/A * if any, must include the following acknowledgment: 2N/A * "This product includes software developed by the 32N/A * Alternately, this acknowledgment may appear in the software itself, 32N/A * if and wherever such third-party acknowledgments normally appear. 313N/A * 4. The names "Apache" and "Apache Software Foundation" must 313N/A * not be used to endorse or promote products derived from this 313N/A * software without prior written permission. For written 313N/A * permission, please contact apache@apache.org. 313N/A * 5. Products derived from this software may not be called "Apache", 313N/A * nor may "Apache" appear in their name, without prior written 313N/A * permission of the Apache Software Foundation. 313N/A * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 313N/A * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 313N/A * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 313N/A * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 313N/A * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 313N/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 127N/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 127N/A * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 127N/A * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 127N/A * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 538N/A * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 538N/A * ==================================================================== 538N/A * This software consists of voluntary contributions made by many 538N/A * individuals on behalf of the Apache Software Foundation. For more 538N/A * information on the Apache Software Foundation, please see 327N/A<!
DOCTYPE xsl:
stylesheet [
327N/A<
xsl:
stylesheet version="1.0" 327N/A<!-- Please, don't hard-code output strings! Use the language --> 327N/A<!-- files and the translation "stuff"... --> 2N/A<!-- Injected variables: --> 145N/A<!-- $is-chm - (boolean) target is for CHM generation or not --> 26N/A<!-- $is-zip - (boolean) target is for ZIP generation or not --> 38N/A<!-- $messages - (node-set) localized common text snippets --> 38N/A<!-- $output-encoding - (string) MIME charset name of the output --> 477N/A<!-- Constants used for case translation --> 538N/A<
xsl:
variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
38N/A<
xsl:
variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
6N/A<!-- space separated list of blockelements defined in common.dtd --> 2N/A<!-- used for inline content catching in <example>s --> 727N/A<
xsl:
variable name="blockelements">
2N/A p example note table ul ol dl pre img blockquote
94N/A<!-- relative path to /manual/ --> 156N/A<!-- load outsourced page types --> 61N/A<!-- load utility snippets --> 61N/A<!-- make sure, we set relative anchors only, if we're actually --> 172N/A<!-- transforming a modulefile (see <directive> template) --> 61N/A<
xsl:
variable name="in-modulesynopsis" select="boolean(/modulesynopsis)" />
220N/A<!-- when referencing to a directory, we may need to complete the path --> 220N/A<!-- with the index file (for offline applications like *.chm files) --> 61N/A<
xsl:
variable name="index-file">
172N/A<!-- it may be desired to open external targets in a new window --> 61N/A<
xsl:
variable name="ext-target" select="boolean($is-chm)" />
74N/A<!-- #################################################################### --> 61N/A<!-- Utility templates for constructing pages --> 220N/A<!-- #################################################################### --> 172N/A<!-- ==================================================================== --> 172N/A<!-- ==================================================================== --> 61N/A<
xsl:
template name="head">
61N/A <!-- the meta element is necessary for offline handling like CHM --> 220N/A <
xsl:
when test="$is-chm or $is-zip">
61N/A <
meta http-
equiv="Content-Type" 61N/A <
xsl:
text> </
xsl:
text>
152N/A <
xsl:
text>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</
xsl:
text>
61N/A <
xsl:
text>This file is generated from xml source: DO NOT EDIT</
xsl:
text>
43N/A <
xsl:
text> </
xsl:
text>
220N/A <
xsl:
text>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</
xsl:
text>
64N/A <
xsl:
when test="name">
64N/A <
xsl:
value-
of select="name"/>
64N/A <
xsl:
value-
of select="title"/>
64N/A <
xsl:
text> </
xsl:
text>
64N/A <!-- chm files get a slightly different stylesheet --> 43N/A <
xsl:
when test="$is-chm">
34N/A <!-- zip packages do also --> 34N/A <
xsl:
when test="$is-zip">
16N/A <
link title="Main stylesheet" type="text/css" media="all" 12N/A <
link title="No Sidebar - Default font size" type="text/css" media="all" 12N/A rel="alternate stylesheet" 12N/A <
link title="Main stylesheet" type="text/css" media="all" 12N/A <
link title="No Sidebar - Default font size" type="text/css" media="all" 12N/A rel="alternate stylesheet" 12N/A <!-- chm files do not need a favicon --> 181N/A <
xsl:
if test="not($is-chm or $is-zip)">&lf;
181N/A<!-- ==================================================================== --> 181N/A<!-- ==================================================================== --> 2N/A<
xsl:
template name="top">
99N/A<
div id="page-header">&lf;
99N/A <
xsl:
call-
template name="super-menu" />&lf;
99N/A</
div>&lf;
<!-- /page-header --> 40N/A <
a href="./{$index-file}">
40N/A <
xsl:
if test="parentdocument">
43N/A <
xsl:
attribute name="href">
40N/A <
xsl:
value-
of select="parentdocument/@href"/>
206N/A <
xsl:
with-
param name="uri" select="parentdocument/@href" />
2N/A </
xsl:
call-
template>
2N/A <
xsl:
if test="$ext-target">
2N/A <
xsl:
attribute name="target">_blank</
xsl:
attribute>
61N/A <
xsl:
text> > </
xsl:
text>
16N/A <
xsl:
if test="$ext-target">
16N/A <
xsl:
attribute name="target">_blank</
xsl:
attribute>
727N/A <
xsl:
text> > </
xsl:
text>
727N/A <
xsl:
if test="$ext-target">
148N/A <
xsl:
attribute name="target">_blank</
xsl:
attribute>
2N/A <
xsl:
text> > </
xsl:
text>
727N/A <
a href="{$path}/{$index-file}">
146N/A <
xsl:
text> > </
xsl:
text>
146N/A <
a href="./{$index-file}">
260N/A <
xsl:
text> > </
xsl:
text>
277N/A <
a href="{parentdocument/@href}">
260N/A <
xsl:
with-
param name="uri" select="parentdocument/@href"/>
260N/A <
xsl:
value-
of select="parentdocument"/>
260N/A<!-- ==================================================================== --> 260N/A<!-- ==================================================================== --> 260N/A<
xsl:
template name="bottom">
260N/A<
xsl:
call-
template name="langavail">
260N/A <
xsl:
with-
param name="position" select="'bottom'" />
82N/A <
xsl:
text> </
xsl:
text>
99N/A <
xsl:
if test="$ext-target">
302N/A <
xsl:
attribute name="target">_blank</
xsl:
attribute>
105N/A <
xsl:
text>Apache HTTP Server Documentation Project</
xsl:
text>
160N/A <
xsl:
call-
template name="super-menu"/>
2N/A<!-- ==================================================================== --> 7N/A<!-- build an "available languages" section --> 142N/A<!-- ==================================================================== --> 43N/A<
xsl:
template name="langavail">
43N/A<
xsl:
param name="position" select="'top'" />
16N/A<
xsl:
variable name="metafile" select="document(/*/@metafile)/metafile" />
138N/A<
xsl:
if test="not($is-chm or $is-zip)">
224N/A<
div class="{$position}lang">&lf;
61N/A <
xsl:
text>: </
xsl:
text>
206N/A <
xsl:
sort select="." />
99N/A <
xsl:
attribute name="href">
99N/A <
xsl:
if test="$messages/@lang != .">
99N/A <
xsl:
attribute name="hreflang">
99N/A <
xsl:
value-
of select="." />
61N/A <
xsl:
attribute name="rel">alternate</
xsl:
attribute>
99N/A <
xsl:
attribute name="title">
99N/A <
xsl:
when test=". != 'fr'">
<!-- no language file avail. --> 99N/A <
xsl:
value-
of select="document(concat('/lang/', ., '.xml')) 61N/A /messages/@langname" />
99N/A <
xsl:
text>Français</
xsl:
text>
99N/A <
xsl:
value-
of select="." />
99N/A <
xsl:
if test="position() != last()">
200N/A <
xsl:
text> |
</
xsl:
text>
99N/A</
div>
<!-- /.{$position}lang --> 99N/A<!-- ==================================================================== --> 99N/A<!-- Process a documentation section --> 99N/A<!-- ==================================================================== --> 99N/A<
xsl:
template match="section">
99N/A<
xsl:
call-
template name="toplink" />&lf;
99N/A<
div class="section">&lf;
102N/A <!-- Section heading --> 61N/A <
xsl:
when test="@id">
99N/A <
a id="{@id}" name="{@id}">
99N/A <
xsl:
apply-
templates select="title" mode="print" />
99N/A <
xsl:
apply-
templates select="title" mode="print" />
99N/A <!-- Section body --> 99N/A <
xsl:
apply-
templates />
99N/A</
div>
<!-- /.section --> 200N/A<!-- ==================================================================== --> 200N/A<!-- handle subsections (lower level headings) --> 200N/A<!-- ==================================================================== --> 200N/A<!-- Section heading --> 99N/A <
xsl:
when test="@id">
99N/A <
a id="{@id}" name="{@id}">
99N/A <
xsl:
apply-
templates select="title" mode="print" />
102N/A <
xsl:
apply-
templates select="title" mode="print" />
99N/A<!-- Section body --> 61N/A<
xsl:
apply-
templates />
99N/A<!-- ==================================================================== --> 102N/A<!-- handle subsubsections (h4) --> 99N/A<!-- ==================================================================== --> 99N/A<!-- Section heading --> 459N/A <
a id="{@id}" name="{@id}">
459N/A <
xsl:
apply-
templates select="title" mode="print" />
102N/A <
xsl:
apply-
templates select="title" mode="print" />
109N/A<!-- ==================================================================== --> 109N/A<!-- section nesting > h4 is not supported for now --> 109N/A<!-- ==================================================================== --> 109N/A<
xsl:
message terminate="yes">
109N/A <
xsl:
text>FATAL: exceeding maximum section nesting level.</
xsl:
text>
99N/A <
xsl:
text>Perhaps you should consider to split your document into</
xsl:
text>
99N/A <
xsl:
text>several ones...</
xsl:
text>
99N/A<!-- ==================================================================== --> 99N/A<!-- (sub)section titles --> 99N/A<!-- ==================================================================== --> 99N/A<!-- ==================================================================== --> 99N/A<!-- generate section index --> 99N/A<!-- ==================================================================== --> 99N/A<
xsl:
template match="section" mode="index">
99N/A <
xsl:
text> </
xsl:
text>
61N/A <
xsl:
when test="@id">
99N/A <
xsl:
apply-
templates select="title" mode="print" />
99N/A <
xsl:
apply-
templates select="title" mode="print" />
99N/A<!-- /section index --> 99N/A<!-- ==================================================================== --> 99N/A<!-- docs super menu --> 99N/A<!-- ==================================================================== --> 99N/A<
xsl:
template name="super-menu">
99N/A <
a href="{$path}/mod/{$index-file}">
206N/A <
xsl:
text> | </
xsl:
text>
206N/A <
xsl:
text> | </
xsl:
text>
206N/A <
a href="{$path}/faq/{$index-file}">
206N/A <
xsl:
text> | </
xsl:
text>
206N/A <
xsl:
text> | </
xsl:
text>
99N/A<!-- ==================================================================== --> 99N/A<!-- iterate over *all* nodes; bare text and other inline stuff is --> 99N/A<!-- wrapped into <p><code>, block level elements (defined in --> 99N/A<!-- $blockelements) are applied "as is" --> 99N/A<!-- ==================================================================== --> 206N/A<
xsl:
variable name="blocks" 206N/A select="concat(' ', normalize-space($blockelements), ' ')" />
99N/A<
xsl:
template match="example">
99N/A<
div class="example">
99N/A <
xsl:
apply-
templates select="title" mode="print" />
99N/A <
xsl:
variable name="is-block-node" 99N/A select="boolean(contains($blocks, 99N/A concat(' ', local-name(), ' ')))"/>
99N/A <!-- bb = (number of) blocks nodes before (the current) --> 99N/A <
xsl:
variable name="bb" 99N/A select="count(preceding-sibling::*[ 806N/A concat(' ', local-name(), ' '))])" />
806N/A <
xsl:
if test="$is-block-node or position()=last()">
99N/A <
xsl:
variable name="content">
99N/A <!-- phew. short explanation, what happens here: --> 99N/A <!-- We want to get the inline stuff between the last --> 170N/A <!-- block node and the current node. --> 170N/A <!-- So filter all previous nodes for the condition --> 170N/A <!-- that the number of block nodes of all of *their* --> 99N/A <!-- previous nodes is >= $bb. Hope that helps ;-) --> 99N/A <
xsl:
apply-
templates 61N/A select="preceding-sibling::node()[ 99N/A count(preceding-sibling::*[ 99N/A concat(' ', local-name(), ' '))]) 99N/A <
xsl:
apply-
templates 99N/A select="self::node()[not($is-block-node)]" />
176N/A <!-- apply bare text only, if it's not only \s or empty --> 99N/A <
xsl:
if test="not(normalize-space($content) = '')">
99N/A <!-- same as $content above. xsl:copy-of seems to make --> 61N/A <!-- thread problems with xalan-j ... --> 99N/A <
xsl:
apply-
templates 99N/A select="preceding-sibling::node()[ 99N/A count(preceding-sibling::*[ 99N/A concat(' ', local-name(), 61N/A <
xsl:
apply-
templates 99N/A select="self::node()[not($is-block-node)]" />
99N/A <
xsl:
apply-
templates select="self::node()[$is-block-node]" />
64N/A</
div>
<!-- /.example --> 64N/A<!-- ==================================================================== --> 64N/A<!-- ==================================================================== --> 62N/A <
xsl:
apply-
templates/>
181N/A<!-- ==================================================================== --> 181N/A<!-- ==================================================================== --> 181N/A<
xsl:
template match="indent">
<!-- ==================================================================== --> <!-- ==================================================================== --> <
xsl:
template match="note">
<
xsl:
if test="@type='warning'">
<
xsl:
attribute name="class">warning</
xsl:
attribute>
<!-- ==================================================================== --> <!-- ==================================================================== --> <!-- ==================================================================== --> <!-- Inserts link to another directive, which might be in another module. --> <!-- References are converted into lower case. --> <!-- ==================================================================== --> <
xsl:
template match="directive" name="directive">
<
xsl:
when test="@module">
<
xsl:
variable name="lowerdirective" select="translate(., $uppercase, $lowercase)" />
<
a href="#{$lowerdirective}">
<
xsl:
if test="@type='section'"><</
xsl:
if>
<
xsl:
value-
of select="."/>
<
xsl:
if test="@type='section'">></
xsl:
if>
<
a href="{$path}/mod/{@module}.html#{$lowerdirective}">
<
xsl:
if test="@type='section'"><</
xsl:
if>
<
xsl:
value-
of select="."/>
<
xsl:
if test="@type='section'">></
xsl:
if>
<
xsl:
if test="@type='section'"><</
xsl:
if>
<
xsl:
value-
of select="."/>
<
xsl:
if test="@type='section'">></
xsl:
if>
<!-- ==================================================================== --> <!-- Inserts a link to refereed module --> <!-- ==================================================================== --> <
xsl:
template match="module" name="module">
<
a href="{$path}/mod/{.}.html">
<
xsl:
value-
of select="."/>
<!-- ==================================================================== --> <!-- ==================================================================== --> <
xsl:
template match="related">
<
xsl:
if test="count(modulelist/*) > 0">
<
xsl:
apply-
templates select="modulelist" />
<
xsl:
if test="count(directivelist/*) > 0">
<
xsl:
apply-
templates select="directivelist"/>
<!-- ==================================================================== --> <!-- ==================================================================== --> <
xsl:
for-
each select="module">
<
xsl:
call-
template name="module"/>
<!-- ==================================================================== --> <!-- ==================================================================== --> <
xsl:
for-
each select="directive">
<
xsl:
call-
template name="directive"/>
<!-- ==================================================================== --> <!-- ==================================================================== --> <
xsl:
template match="table">
<!-- existing border attribute will result in <table class="bordered"> --> <
xsl:
attribute name="class">bordered</
xsl:
attribute>
<!-- style="zebra": alternating colors per row, i.e. every second row --> <!-- gets a class="odd". Header lines (no <td>) get a --> <!-- class="header". These lines will be excluded from --> <!-- the "odd" line count. That way header lines act --> <!-- interjectional, which creates a better visual and --> <!-- psychological effect. --> <
xsl:
when test="@style = 'zebra'">
<
xsl:
for-
each select="tr">
<
xsl:
when test="count(td) = 0">
<
xsl:
attribute name="class">header</
xsl:
attribute>
(count(preceding-sibling::tr[count(td) = 0]) mod 2)">
<
xsl:
attribute name="class">odd</
xsl:
attribute>
<!-- ==================================================================== --> <!-- ==================================================================== --> <
xsl:
template match="ol">
<!-- A. B. C. D. (list-style-type="upper-alpha") --> <
xsl:
if test="@type = 'A'">
<
xsl:
attribute name="class">up-A</
xsl:
attribute>
<!-- ==================================================================== --> <!-- diverse elements --> <!-- Passes through content --> <!-- ==================================================================== --> <
xsl:
template match="summary|description|usage|syntax|default">
<!-- ==================================================================== --> <!-- ==================================================================== --> <
xsl:
when test="not(@href)">
<
xsl:
apply-
templates select="@*|*|text()"/>
<
xsl:
apply-
templates select="@*"/>
<
xsl:
with-
param name="uri" select="@href"/>
<
xsl:
apply-
templates select="*|text()"/>
<!-- ==================================================================== --> <!-- ==================================================================== --> <
xsl:
template name="toplink">
<
a href="#page-header"><
img src="{$path}/images/up.gif" alt="top" /></
a>
<!-- ==================================================================== --> <!-- translator's notes are displayed in a different color --> <!-- ==================================================================== --> <
xsl:
template match="transnote">
<!-- ==================================================================== --> <!-- Filter   in text() nodes. --> <!-- In some environments this character won't be transformed correctly, --> <!-- so we just write it explicitely as " " into the output. --> <!-- ==================================================================== --> <
xsl:
param name="text" select="." />
<
xsl:
when test="contains($text, ' ')">
<
xsl:
value-
of select="substring-before($text, ' ')" />
<
xsl:
with-
param name="text" select="substring-after($text, ' ')" />
<
xsl:
value-
of select="$text" />
<!-- ==================================================================== --> <!-- Process everything else by just passing it through --> <!-- ==================================================================== --> <
xsl:
message terminate="yes">
<
xsl:
text>Unknown element: </
xsl:
text>
<
xsl:
value-
of select="local-name()" />&lf;
<
xsl:
template match="@*">
<
xsl:
apply-
templates select="*|@*|text()" />
<
xsl:
template match="br"><
br /></
xsl:
template>
<
xsl:
template match="tr"><
tr><
xsl:
apply-
templates select="*|@*|text()" /></
tr></
xsl:
template>
<
xsl:
template match="th"><
th><
xsl:
apply-
templates select="*|@*|text()" /></
th></
xsl:
template>
<
xsl:
template match="td"><
td><
xsl:
apply-
templates select="*|@*|text()" /></
td></
xsl:
template>
<
xsl:
template match="p"><
p><
xsl:
apply-
templates select="*|@*|text()" /></
p></
xsl:
template>
<
xsl:
template match="ul"><
ul><
xsl:
apply-
templates select="*|@*|text()" /></
ul></
xsl:
template>
<
xsl:
template match="li"><
li><
xsl:
apply-
templates select="*|@*|text()" /></
li></
xsl:
template>
<
xsl:
template match="dl"><
dl><
xsl:
apply-
templates select="*|@*|text()" /></
dl></
xsl:
template>
<
xsl:
template match="dt"><
dt><
xsl:
apply-
templates select="*|@*|text()" /></
dt></
xsl:
template>
<
xsl:
template match="dd"><
dd><
xsl:
apply-
templates select="*|@*|text()" /></
dd></
xsl:
template>
<
xsl:
template match="em"><
em><
xsl:
apply-
templates select="*|@*|text()" /></
em></
xsl:
template>
<
xsl:
template match="strong"><
strong><
xsl:
apply-
templates select="*|@*|text()" /></
strong></
xsl:
template>
<
xsl:
template match="pre"><
pre><
xsl:
apply-
templates select="*|@*|text()" /></
pre></
xsl:
template>
<
xsl:
template match="code"><
code><
xsl:
apply-
templates select="*|@*|text()" /></
code></
xsl:
template>
<
xsl:
template match="var"><
var><
xsl:
apply-
templates select="*|@*|text()" /></
var></
xsl:
template>
<
xsl:
template match="dfn"><
dfn><
xsl:
apply-
templates select="*|@*|text()" /></
dfn></
xsl:
template>
<
xsl:
template match="blockquote"><
blockquote><
xsl:
apply-
templates select="*|@*|text()" /></
blockquote></
xsl:
template>
<
xsl:
template match="q"><
q><
xsl:
apply-
templates select="*|@*|text()" /></
q></
xsl:
template>
<
xsl:
template match="cite"><
cite><
xsl:
apply-
templates select="*|@*|text()" /></
cite></
xsl:
template>
<
xsl:
template match="img"><
img><
xsl:
apply-
templates select="*|@*|text()" /></
img></
xsl:
template>
<!-- ==================================================================== --> <!-- create a letter bar --> <!-- ==================================================================== --> <
xsl:
template name="letter-bar">
<
xsl:
param name="letters" />
<
xsl:
param name="first" />
<
xsl:
if test="not($first)">
<
a href="#{substring($letters,1,1)}">
<
xsl:
value-
of select="substring($letters, 1, 1)" />
<
xsl:
if test="string-length($letters) > 1">
<
xsl:
call-
template name="letter-bar">
<
xsl:
with-
param name="letters" select="substring($letters, 2)" />
<
xsl:
with-
param name="first" select="false()" />
<!-- ==================================================================== --> <!-- template(s) for collecting all start letters of directives --> <!-- ==================================================================== --> <
xsl:
template name="directive-startletters">
<
xsl:
param name="directives" />
<
xsl:
call-
template name="_squeeze-letters">
<
xsl:
with-
param name="lastletter" select="''" />
<
xsl:
with-
param name="letters">
<
xsl:
for-
each select="$directives">
<
xsl:
sort select="name"/>
select="translate(substring(normalize-space(name), 1, 1), $lowercase, $uppercase)" />
<!-- /directive-startletters --> <!-- ==================================================================== --> <!-- squeeze subsequent letters in a string --> <!-- ==================================================================== --> <
xsl:
template name="_squeeze-letters">
<
xsl:
param name="letters"/>
<
xsl:
param name="lastletter"/>
<
xsl:
variable name="current" select="substring($letters, 1, 1)" />
<
xsl:
if test="not($lastletter = $current)">
<
xsl:
value-
of select="$current" />
<
xsl:
if test="string-length($letters) > 1">
<
xsl:
call-
template name="_squeeze-letters">
<
xsl:
with-
param name="letters" select="substring($letters, 2)" />
<
xsl:
with-
param name="lastletter" select="$current"/>
<!-- /_squeeze-letters --> <!-- ==================================================================== --> <!-- fix href and target attribute of an element. --> <!-- ==================================================================== --> <!-- lame is_absolute_uri test --> <
xsl:
when test=" contains($uri, ':') and string-length(substring-before($uri, ':')) < 7">
<
xsl:
if test="$ext-target">
<
xsl:
attribute name="target">_blank</
xsl:
attribute>
<
xsl:
variable name="fragment">
<
xsl:
if test="contains($uri, '#')">
<
xsl:
value-
of select="concat('#', substring-after($uri, '#'))"/>
<
xsl:
variable name="absuri">
<
xsl:
when test="contains($uri, '#')">
<
xsl:
value-
of select="concat('#', substring-before($uri, '#'))"/>
<
xsl:
value-
of select="$uri"/>
<
xsl:
if test="substring($absuri, string-length($uri), 1) = '/'">
<
xsl:
attribute name="href">
<
xsl:
value-
of select="concat($absuri, $index-file, $fragment)"/>
<!-- ==================================================================== --> <!-- Ignore table hints used for latex --> <!-- ==================================================================== --> <
xsl:
template match="columnspec">
<
xsl:
template match="column">