httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From n.@apache.org
Subject cvs commit: httpd-2.0/docs/manual/style/xsl directiveindex.xsl
Date Sat, 21 Sep 2002 00:42:42 GMT
nd          2002/09/20 17:42:42

  Modified:    docs/manual/style/xsl directiveindex.xsl
  Log:
  use generic mechanism to detect and create linked letters
  nice side effect: the build speeds up ;-)
  
  Revision  Changes    Path
  1.3       +65 -58    httpd-2.0/docs/manual/style/xsl/directiveindex.xsl
  
  Index: directiveindex.xsl
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/docs/manual/style/xsl/directiveindex.xsl,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- directiveindex.xsl	13 Sep 2002 16:32:36 -0000	1.2
  +++ directiveindex.xsl	21 Sep 2002 00:42:42 -0000	1.3
  @@ -15,6 +15,11 @@
         <body id="directive-index">
           <xsl:call-template name="top"/>
   
  +        <!-- collect the start letters -->
  +        <xsl:variable name="start-letters">
  +          <xsl:call-template name="directive-startletters" />
  +        </xsl:variable>
  +
           <div id="preamble">
             <h1>
               <xsl:value-of select="title"/>
  @@ -23,84 +28,86 @@
             <xsl:apply-templates select="summary" />
   
             <!-- letter line -->
  -          <xsl:if test="letters">
  -            <p class="letters">
  -              <xsl:for-each select="letters/*">
  -                <xsl:variable name="letter" select="."/>
  -
  -                <!-- check on directives starting with $letter -->
  -                <xsl:if test="count(document(/*/modulefilelist/modulefile)/modulesynopsis/directivesynopsis[not(@location)][$letter=translate(substring(normalize-space(name),1,1),$lowercase,$uppercase)])
&gt; 0">
  -                  <xsl:if test="position() > 1"> <!-- assume, we always have
directives starting with "A" -->
  -                    <xsl:text> | </xsl:text>
  -                  </xsl:if>
  -
  -                  <a href="#{$letter}">&nbsp;<xsl:value-of select="$letter"/>&nbsp;</a>
  -                </xsl:if>
  +          <p class="letters">
  +            <xsl:call-template name="letter-bar">
  +              <xsl:with-param name="letters" select="$start-letters"/>
  +              <xsl:with-param name="first" select="true()"/>
  +            </xsl:call-template>
  +          </p>
  +          <!-- /letter line -->
   
  -              </xsl:for-each>
  -            </p><xsl:text>
  +<xsl:text>
   </xsl:text> <!-- insert a line break -->
  -          </xsl:if>
  -          <!-- /letter line -->
   
           </div> <!-- /preamble -->
   
           <div id="directive-list">
             <ul>
  +            <xsl:call-template name="dindex-of-letter">
  +              <xsl:with-param name="letters-todo" select="$start-letters"/>
  +            </xsl:call-template>
  +
               <xsl:if test="letters">
                 <xsl:for-each select="letters/*">
                   <xsl:variable name="letter" select="."/>
   
  -                <xsl:for-each select="document(/*/modulefilelist/modulefile)/modulesynopsis/directivesynopsis[not(@location)][$letter=translate(substring(normalize-space(name),1,1),$lowercase,$uppercase)]">
  -                  <xsl:sort select="name"/>
  -
  -                  <li>
  -                    <xsl:if test="position()=1">
  -                      <a name="{$letter}" id="{$letter}" href="{../name}.html#{translate(name,$uppercase,$lowercase)}">
  -                        <xsl:if test="@type = 'section'">&lt;</xsl:if>
  -                        <xsl:value-of select="name"/>
  -                        <xsl:if test="@type = 'section'">&gt;</xsl:if>
  -                      </a>
  -                    </xsl:if>
  -
  -                    <xsl:if test="position() != 1">
  -		      <a href="{../name}.html#{translate(name,$uppercase,$lowercase)}">
  -                        <xsl:if test="@type = 'section'">&lt;</xsl:if>
  -                        <xsl:value-of select="name"/>
  -                        <xsl:if test="@type = 'section'">&gt;</xsl:if>
  -                      </a>
  -                    </xsl:if>
  -                  </li><xsl:text>
  -</xsl:text>                                           <!-- insert a line break
-->
  -                </xsl:for-each> <!-- /directives -->
                 </xsl:for-each> <!-- /letters -->
               </xsl:if>
               <!-- /if letters -->
   
  -              <!-- this branch is only applied, if there's no <letters> specified
in directives.xml.
  -                   you may remove the this branch if you want the letters generally -->
  -            <xsl:if test="not(letters)">
  -              <xsl:for-each select="document(/*/modulefilelist/modulefile)/modulesynopsis/directivesynopsis[not(@location)]">
  -                <xsl:sort select="name"/>
  -
  -                <li>
  -                  <a href="{../name}.html#{translate(name,$uppercase,$lowercase)}">
  -                    <xsl:if test="@type = 'section'">&lt;</xsl:if>
  -                    <xsl:value-of select="name"/>
  -                    <xsl:if test="@type = 'section'">&gt;</xsl:if>
  -                  </a>
  -                </li><xsl:text>
  -</xsl:text>                                           <!-- insert a line break
-->
  -              </xsl:for-each>
  -            </xsl:if>
  -            <!-- /no letters -->
  -
             </ul>
           </div> <!-- /directive-index -->
   
           <xsl:call-template name="bottom"/>
         </body>
       </html>
  -  </xsl:template> 
  +  </xsl:template>
  +
  +
  +  <!--                                                     -->
  +  <!-- the working horse. builds list items of all         -->
  +  <!-- directives starting with one letter                 -->
  +  <!-- when done, it calls itself to catch the next letter -->
  +  <!--                                                     -->
  +  <xsl:template name="dindex-of-letter">
  +  <xsl:param name="letters-todo"/>
  +
  +    <xsl:variable name="letter" select="substring($letters-todo,1,1)"/>
  +
  +    <xsl:for-each select="document(/*/modulefilelist/modulefile)/modulesynopsis/directivesynopsis[not(@location)][$letter=translate(substring(normalize-space(name),1,1),$lowercase,$uppercase)]">
  +    <xsl:sort select="name"/>
  +
  +      <li><xsl:choose>
  +        <xsl:when test="position()=1">
  +          <a name="{$letter}" id="{$letter}" href="{../name}.html#{translate(name,$uppercase,$lowercase)}">
  +            <xsl:if test="@type = 'section'">&lt;</xsl:if>
  +            <xsl:value-of select="name"/>
  +            <xsl:if test="@type = 'section'">&gt;</xsl:if>
  +          </a>
  +        </xsl:when>
  +
  +        <xsl:otherwise>
  +          <a href="{../name}.html#{translate(name,$uppercase,$lowercase)}">
  +            <xsl:if test="@type = 'section'">&lt;</xsl:if>
  +            <xsl:value-of select="name"/>
  +            <xsl:if test="@type = 'section'">&gt;</xsl:if>
  +          </a>
  +        </xsl:otherwise></xsl:choose>
  +      </li>
  +
  +<xsl:text>
  +</xsl:text> <!-- insert a line break -->
  +
  +    </xsl:for-each> <!-- /directives -->
  +
  +    <!-- call next letter, if there is -->
  +    <xsl:if test="string-length($letters-todo) &gt; 1">
  +      <xsl:call-template name="dindex-of-letter">
  +        <xsl:with-param name="letters-todo" select="substring($letters-todo,2)"/>
  +      </xsl:call-template>
  +    </xsl:if>
  +
  +  </xsl:template>
  +  <!-- /dindex-of-letter -->
   
   </xsl:stylesheet>
  
  
  

Mime
View raw message