moduleindex.xsl revision beaad6ac31022179c44d88536811e9ccd9425696
beaad6ac31022179c44d88536811e9ccd9425696nd<?xml version="1.0"?>
beaad6ac31022179c44d88536811e9ccd9425696nd
beaad6ac31022179c44d88536811e9ccd9425696nd<!--
beaad6ac31022179c44d88536811e9ccd9425696nd Copyright 2002-2004 Apache Software Foundation
beaad6ac31022179c44d88536811e9ccd9425696nd
beaad6ac31022179c44d88536811e9ccd9425696nd Licensed under the Apache License, Version 2.0 (the "License");
beaad6ac31022179c44d88536811e9ccd9425696nd you may not use this file except in compliance with the License.
beaad6ac31022179c44d88536811e9ccd9425696nd 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">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<html xml:lang="{$messages/@lang}" lang="{$messages/@lang}">
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">
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">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="$messages/message
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [@name='corefeatures']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </li>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <li>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <img src="{$path}/images/down.gif" alt="" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:text> </xsl:text>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <a href="#other">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="$messages/message
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [@name='othermodules']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </li>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </ul>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </xsl:if> <!-- !$is-chm -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:if test="seealso">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <h3>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="$messages/message
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [@name='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">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="$messages/message
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [@name='corefeatures']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </h2>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <!-- core -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dl>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <a href="{document(modulefilelist/modulefile
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [starts-with(., 'core.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/name}.html">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="document(modulefilelist/modulefile
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [starts-with(., 'core.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/name" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dd>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:apply-templates
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="document(modulefilelist/modulefile
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [starts-with(., 'core.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/description" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dd>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <!-- mpm_common -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <a href="{document(modulefilelist/modulefile
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [starts-with(., 'mpm_common.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/name}.html">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="document(modulefilelist/modulefile
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [starts-with(., 'mpm_common.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/name" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dt>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <dd class="separate">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:apply-templates
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="document(modulefilelist/modulefile
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [starts-with(., 'mpm_common.xml')])
7e68fce3cbd2246164e045a51ecd77f9f26680ednd /modulesynopsis/description" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </dd>&lf;
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <!-- and now the remaining MPMs -->
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:variable name="mpmmodules"
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="document(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">
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:value-of select="$messages/message
7e68fce3cbd2246164e045a51ecd77f9f26680ednd [@name='othermodules']" />
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </a>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </h2>&lf;
3726777f47ac4bba3e21b075905959bbea47e72eerikabele
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <xsl:variable name="modules"
7e68fce3cbd2246164e045a51ecd77f9f26680ednd select="document(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>