beaad6ac31022179c44d88536811e9ccd9425696nd<?xml version="1.0"?>
beaad6ac31022179c44d88536811e9ccd9425696nd
beaad6ac31022179c44d88536811e9ccd9425696nd<!--
db878466c5e95073429dda0bdd001f45e9486e16fielding Licensed to the Apache Software Foundation (ASF) under one or more
db878466c5e95073429dda0bdd001f45e9486e16fielding contributor license agreements. See the NOTICE file distributed with
db878466c5e95073429dda0bdd001f45e9486e16fielding this work for additional information regarding copyright ownership.
db878466c5e95073429dda0bdd001f45e9486e16fielding The ASF licenses this file to You under the Apache License, Version 2.0
db878466c5e95073429dda0bdd001f45e9486e16fielding (the "License"); you may not use this file except in compliance with
db878466c5e95073429dda0bdd001f45e9486e16fielding the License. You may obtain a copy of the License at
beaad6ac31022179c44d88536811e9ccd9425696nd
beaad6ac31022179c44d88536811e9ccd9425696nd http://www.apache.org/licenses/LICENSE-2.0
beaad6ac31022179c44d88536811e9ccd9425696nd
beaad6ac31022179c44d88536811e9ccd9425696nd Unless required by applicable law or agreed to in writing, software
beaad6ac31022179c44d88536811e9ccd9425696nd distributed under the License is distributed on an "AS IS" BASIS,
beaad6ac31022179c44d88536811e9ccd9425696nd WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
beaad6ac31022179c44d88536811e9ccd9425696nd See the License for the specific language governing permissions and
beaad6ac31022179c44d88536811e9ccd9425696nd limitations under the License.
beaad6ac31022179c44d88536811e9ccd9425696nd-->
beaad6ac31022179c44d88536811e9ccd9425696nd
01c674544bd4c211141bcd9fb09b96ffc18c6c3dnd<!DOCTYPE xsl:stylesheet [
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <!ENTITY lf SYSTEM "util/lf.xml">
01c674544bd4c211141bcd9fb09b96ffc18c6c3dnd]>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele<xsl:stylesheet version="1.0"
3726777f47ac4bba3e21b075905959bbea47e72eerikabele xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3726777f47ac4bba3e21b075905959bbea47e72eerikabele xmlns="http://www.w3.org/1999/xhtml">
3726777f47ac4bba3e21b075905959bbea47e72eerikabele
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- ==================================================================== -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- <moduleindex> -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- Builds the moduleindex page -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- ==================================================================== -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:template match="moduleindex">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<html xml:lang="{$doclang}" lang="{$doclang}">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="head"/>&lf;
3726777f47ac4bba3e21b075905959bbea47e72eerikabele
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <body id="module-index">
3726777f47ac4bba3e21b075905959bbea47e72eerikabele <xsl:call-template name="top"/>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele
4489f0b54d190e8ac29906e1071bbad6c49de17end <div id="page-content">
f1110149b5b6c28ecc39d1958d98ad9cfa8e41f3nd <xsl:call-template name="retired" />
f1110149b5b6c28ecc39d1958d98ad9cfa8e41f3nd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <div id="preamble">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <h1>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="title" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </h1>&lf;
8cfbcde8e416fd60132dd4324c42a5098da156cfnd
8cfbcde8e416fd60132dd4324c42a5098da156cfnd <xsl:call-template name="langavail" />&lf;
8cfbcde8e416fd60132dd4324c42a5098da156cfnd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:apply-templates select="summary" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </div>&lf; <!-- /#preamble -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:if test="not($is-chm) or seealso">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <div id="quickview">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:if test="not($is-chm)">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <ul id="toc">&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <li>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <img src="{$path}/images/down.gif" alt="" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:text> </xsl:text>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <a href="#core">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$message
66e48875fca2df6669dab4f2690ee36c6913c0ffnd [@id='corefeatures']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </li>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <li>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <img src="{$path}/images/down.gif" alt="" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:text> </xsl:text>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <a href="#other">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$message
66e48875fca2df6669dab4f2690ee36c6913c0ffnd [@id='othermodules']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </li>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </ul>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:if> <!-- !$is-chm -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:if test="seealso">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <h3>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$message
66e48875fca2df6669dab4f2690ee36c6913c0ffnd [@id='seealso']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </h3>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <ul class="seealso">&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:for-each select="seealso">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <li>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:apply-templates />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </li>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:for-each>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </ul>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:if> <!-- /seealso -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </div> <!-- /#quickview -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:if>&lf; <!-- have sidebar -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="toplink" />&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <div class="section">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <h2>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <a name="core" id="core">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$message
66e48875fca2df6669dab4f2690ee36c6913c0ffnd [@id='corefeatures']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </h2>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <!-- core -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dl>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dt>
d8a47f7a3f857a43664484552cf83bf170e4629dnd <a href="{document(document($allmodules)/modulefilelist
d8a47f7a3f857a43664484552cf83bf170e4629dnd /modulefile[starts-with(., 'core.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/name}.html">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of
d8a47f7a3f857a43664484552cf83bf170e4629dnd select="document(document($allmodules)/modulefilelist
d8a47f7a3f857a43664484552cf83bf170e4629dnd /modulefile[starts-with(., 'core.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/name" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dd>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:apply-templates
d8a47f7a3f857a43664484552cf83bf170e4629dnd select="document(document($allmodules)/modulefilelist
d8a47f7a3f857a43664484552cf83bf170e4629dnd /modulefile[starts-with(., 'core.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/description" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dd>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <!-- mpm_common -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dt>
d8a47f7a3f857a43664484552cf83bf170e4629dnd <a href="{document(document($allmodules)/modulefilelist
d8a47f7a3f857a43664484552cf83bf170e4629dnd /modulefile[starts-with(., 'mpm_common.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/name}.html">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of
d8a47f7a3f857a43664484552cf83bf170e4629dnd select="document(document($allmodules)/modulefilelist
d8a47f7a3f857a43664484552cf83bf170e4629dnd /modulefile[starts-with(., 'mpm_common.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/name" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dd class="separate">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:apply-templates
d8a47f7a3f857a43664484552cf83bf170e4629dnd select="document(document($allmodules)/modulefilelist
d8a47f7a3f857a43664484552cf83bf170e4629dnd /modulefile[starts-with(., 'mpm_common.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/description" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dd>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <!-- and now the remaining MPMs -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:variable name="mpmmodules"
d8a47f7a3f857a43664484552cf83bf170e4629dnd select="document(document($allmodules)/modulefilelist/modulefile)
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [status='MPM' and name != 'mpm_common']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:variable name="translist">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="module-translist">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="modules" select="$mpmmodules" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:call-template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:variable>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:for-each select="$mpmmodules">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:sort select="substring-before(substring-after($translist,
7e68fce3cbd2246164e045a51ecd77f9f26680ednd concat('- ', translate(normalize-space(name), $lowercase,
7e68fce3cbd2246164e045a51ecd77f9f26680ednd $uppercase), ' ')), ' -')" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <a href="{name}.html">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="name" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dd>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:apply-templates select="description" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dd>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:for-each>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dl>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </div>&lf; <!-- /core section -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="toplink" />&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <div class="section">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <h2>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <a name="other" id="other">
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <xsl:value-of select="$message
66e48875fca2df6669dab4f2690ee36c6913c0ffnd [@id='othermodules']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </h2>&lf;
3726777f47ac4bba3e21b075905959bbea47e72eerikabele
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:variable name="modules"
d8a47f7a3f857a43664484552cf83bf170e4629dnd select="document(document($allmodules)/modulefilelist/modulefile)
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis[status!='MPM' and
7e68fce3cbd2246164e045a51ecd77f9f26680ednd status!='Core']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:variable name="start-letters">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="module-startletters">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="modules" select="$modules" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:call-template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:variable>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <p class="letters">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="letter-bar">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="letters" select="$start-letters"/>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="first" select="true()"/>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:call-template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </p>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dl>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="mindex-of-letter">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="letters-todo"
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="$start-letters" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="modules" select="$modules" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:call-template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dl>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </div> <!-- /modules section -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </div>&lf; <!-- /#page-content -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="bottom" />&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </body>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</html>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- /moduleindex -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- ==================================================================== -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- the working horse. builds list items of all modules starting with -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- one letter when done, it calls itself to catch the next letter -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- ==================================================================== -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:template name="mindex-of-letter">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:param name="letters-todo"/>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:param name="modules"/>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:variable name="letter" select="substring($letters-todo, 1, 1)" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:variable name="translist">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="module-translist">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="modules" select="$modules" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:call-template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:variable>
e0471b26427a7310358a7a3a835bd146072e4c29nd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:for-each
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="$modules[$letter=substring(substring-before(substring-after(
7e68fce3cbd2246164e045a51ecd77f9f26680ednd $translist, concat('- ', translate(normalize-space(name), $lowercase,
7e68fce3cbd2246164e045a51ecd77f9f26680ednd $uppercase), ' ')), ' -'), 1, 1)]">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:sort
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="substring-before(substring-after($translist, concat('- ',
7e68fce3cbd2246164e045a51ecd77f9f26680ednd translate(normalize-space(name),$lowercase,$uppercase), ' ')), ' -')" />
e0471b26427a7310358a7a3a835bd146072e4c29nd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <a href="{name}.html">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:if test="position() = 1">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:attribute name="id">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="$letter" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:attribute>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:attribute name="name">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="$letter" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:attribute>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:if>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="name" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dd>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:apply-templates select="description" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dd>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:for-each> <!-- /directives -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- call next letter, if there is -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:if test="string-length($letters-todo) &gt; 1">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="mindex-of-letter">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="letters-todo"
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="substring($letters-todo, 2)" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="modules" select="$modules" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:call-template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:if>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- /mindex-of-letter -->
e0471b26427a7310358a7a3a835bd146072e4c29nd
e0471b26427a7310358a7a3a835bd146072e4c29nd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- ==================================================================== -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- collect start letters of modules -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- ==================================================================== -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:template name="module-startletters">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:param name="modules" />
e0471b26427a7310358a7a3a835bd146072e4c29nd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:variable name="translist">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="module-translist">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="modules" select="$modules" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:call-template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:variable>
e0471b26427a7310358a7a3a835bd146072e4c29nd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:call-template name="_squeeze-letters">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="lastletter" select="''" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="letters">
e0471b26427a7310358a7a3a835bd146072e4c29nd <xsl:for-each select="$modules">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:sort
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="substring-before(substring-after($translist, concat('- ',
7e68fce3cbd2246164e045a51ecd77f9f26680ednd translate(normalize-space(name), $lowercase, $uppercase), ' ')),
7e68fce3cbd2246164e045a51ecd77f9f26680ednd ' -')" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="substring(substring-before(substring-after($translist,
7e68fce3cbd2246164e045a51ecd77f9f26680ednd concat('- ', translate(normalize-space(name), $lowercase,
7e68fce3cbd2246164e045a51ecd77f9f26680ednd $uppercase), ' ')), ' -'), 1, 1)" />
e0471b26427a7310358a7a3a835bd146072e4c29nd </xsl:for-each>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:with-param>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:call-template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- /module-startletters -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- ==================================================================== -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- define module name translations for sorting -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- it's a kind of a hack... -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- we build a string that contains the following data: -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- "- modulename sortname - modulename sortname - ..." -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- (with all data in uppercase) -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- So, the translation from modulename to sortname can be done with the -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- expression below: -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!--
e0471b26427a7310358a7a3a835bd146072e4c29nd substring-before(
e0471b26427a7310358a7a3a835bd146072e4c29nd substring-after($translist,
7e68fce3cbd2246164e045a51ecd77f9f26680ednd concat('- ', translate(modulename,
7e68fce3cbd2246164e045a51ecd77f9f26680ednd $lowercase, $uppercase),
e0471b26427a7310358a7a3a835bd146072e4c29nd ' ')
e0471b26427a7310358a7a3a835bd146072e4c29nd ),
e0471b26427a7310358a7a3a835bd146072e4c29nd ' -')
7e68fce3cbd2246164e045a51ecd77f9f26680ednd -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- ==================================================================== -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:template name="module-translist">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:param name="modules" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:text>-</xsl:text>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<xsl:for-each select="$modules">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:variable name="sname" select="translate(normalize-space(name),
7e68fce3cbd2246164e045a51ecd77f9f26680ednd $lowercase, $uppercase)" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:text> </xsl:text>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="$sname" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:text> </xsl:text>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:call-template name="module-translatename">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:with-param name="name" select="$sname" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:call-template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:text> -</xsl:text>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:for-each>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:template>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<!-- /module-translist -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</xsl:stylesheet>