home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 May / PCWorld_2003-05_cd.bin / Komunik / apache / apache_2.0.45-win32-x86-no_ssl.msi / Data.Cab / F233075_directiveindex.xsl < prev    next >
Extensible Markup Language  |  2002-12-11  |  4KB  |  130 lines

  1. <?xml version="1.0"?>
  2. <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
  3. <xsl:stylesheet version="1.0"
  4.               xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  5.                   xmlns="http://www.w3.org/1999/xhtml">
  6.  
  7.   <!--                                                    -->
  8.   <!-- <directiveindex>                                   -->
  9.   <!-- Builds the directive index page                    -->
  10.   <!--                                                    -->
  11.   <xsl:template match="directiveindex">
  12.     <html xml:lang="{$messages/@lang}" lang="{$messages/@lang}">
  13.       <xsl:call-template name="head"/>
  14.  
  15. <xsl:text>
  16. </xsl:text> <!-- insert line break -->
  17.  
  18.       <body id="directive-index">
  19.         <xsl:call-template name="top"/>
  20.  
  21.         <xsl:variable name="directives" select="document(sitemap/category[@id='modules']/modulefilelist/modulefile)/modulesynopsis[status!='Obsolete']/directivesynopsis[not(@location)]"/>
  22.  
  23.         <!-- collect the start letters -->
  24.         <xsl:variable name="start-letters">
  25.           <xsl:call-template name="directive-startletters">
  26.             <xsl:with-param name="directives" select="$directives"/>
  27.           </xsl:call-template>
  28.         </xsl:variable>
  29.  
  30.         <div id="preamble">
  31.           <h1>
  32.             <xsl:value-of select="title"/>
  33.           </h1>
  34.  
  35. <xsl:text>
  36. </xsl:text> <!-- insert line break -->
  37.  
  38.           <xsl:apply-templates select="summary" />
  39.  
  40. <xsl:text>
  41. </xsl:text> <!-- insert line break -->
  42.  
  43.           <!-- letter line -->
  44.           <p class="letters">
  45.             <xsl:call-template name="letter-bar">
  46.               <xsl:with-param name="letters" select="$start-letters"/>
  47.               <xsl:with-param name="first" select="true()"/>
  48.             </xsl:call-template>
  49.           </p>
  50.           <!-- /letter line -->
  51.  
  52. <xsl:text>
  53. </xsl:text> <!-- insert a line break -->
  54.  
  55.         </div> <!-- /preamble -->
  56.  
  57. <xsl:text>
  58. </xsl:text> <!-- insert line break -->
  59.  
  60.         <div id="directive-list">
  61.           <ul>
  62.  
  63. <xsl:text>
  64. </xsl:text> <!-- insert line break -->
  65.  
  66.             <xsl:call-template name="dindex-of-letter">
  67.               <xsl:with-param name="letters-todo" select="$start-letters"/>
  68.               <xsl:with-param name="directives" select="$directives"/>
  69.             </xsl:call-template>
  70.           </ul>
  71.         </div> <!-- /directive-list -->
  72.  
  73. <xsl:text>
  74. </xsl:text> <!-- insert line break -->
  75.  
  76.         <xsl:call-template name="bottom"/>
  77.  
  78. <xsl:text>
  79. </xsl:text> <!-- insert line break -->
  80.  
  81.       </body>
  82.     </html>
  83.   </xsl:template>
  84.  
  85.  
  86.   <!--                                                     -->
  87.   <!-- the working horse. builds list items of all         -->
  88.   <!-- directives starting with one letter                 -->
  89.   <!-- when done, it calls itself to catch the next letter -->
  90.   <!--                                                     -->
  91.   <xsl:template name="dindex-of-letter">
  92.   <xsl:param name="letters-todo"/>
  93.   <xsl:param name="directives"/>
  94.  
  95.     <xsl:variable name="letter" select="substring($letters-todo,1,1)"/>
  96.  
  97.     <xsl:for-each select="$directives[$letter=translate(substring(normalize-space(name),1,1),$lowercase,$uppercase)]">
  98.     <xsl:sort select="name"/>
  99.  
  100.       <li>
  101.         <a href="{../name}.html#{translate(name,$uppercase,$lowercase)}">
  102.           <xsl:if test="position()=1">
  103.             <xsl:attribute name="id"><xsl:value-of select="$letter"/></xsl:attribute>
  104.             <xsl:attribute name="name"><xsl:value-of select="$letter"/></xsl:attribute>
  105.           </xsl:if>
  106.  
  107.           <xsl:if test="@type = 'section'"><</xsl:if>
  108.           <xsl:value-of select="name"/>
  109.           <xsl:if test="@type = 'section'">></xsl:if>
  110.         </a>
  111.       </li>
  112.  
  113. <xsl:text>
  114. </xsl:text> <!-- insert a line break -->
  115.  
  116.     </xsl:for-each> <!-- /directives -->
  117.  
  118.     <!-- call next letter, if there is -->
  119.     <xsl:if test="string-length($letters-todo) > 1">
  120.       <xsl:call-template name="dindex-of-letter">
  121.         <xsl:with-param name="letters-todo" select="substring($letters-todo,2)"/>
  122.         <xsl:with-param name="directives" select="$directives"/>
  123.       </xsl:call-template>
  124.     </xsl:if>
  125.  
  126.   </xsl:template>
  127.   <!-- /dindex-of-letter -->
  128.  
  129. </xsl:stylesheet>
  130.