]> granicus.if.org Git - apache/commitdiff
add generic mechanisms for
authorAndré Malo <nd@apache.org>
Sat, 21 Sep 2002 00:40:44 +0000 (00:40 +0000)
committerAndré Malo <nd@apache.org>
Sat, 21 Sep 2002 00:40:44 +0000 (00:40 +0000)
- collecting start letters of directive names
- creating a letter bar
with this change, the <letters> element is no longer needed

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@96937 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/style/xsl/common.xsl

index b8755d8aee6ab24ef6ab51be87c6d1080ed21888..c732d6171af5d9270c92ad47499840e93c07ab4b 100644 (file)
     </xsl:copy>
   </xsl:template>
 
+
+  <!--                                                    -->
+  <!-- create a letter bar                                -->
+  <!-- used in several documents                          -->
+  <!--                                                    -->
+  <xsl:template name="letter-bar">
+  <xsl:param name="letters"/>
+  <xsl:param name="first"/>
+
+    <xsl:if test="not($first)">
+      <xsl:text> | </xsl:text>
+    </xsl:if>
+
+    <a href="#{substring($letters,1,1)}">
+      <xsl:text>&nbsp;</xsl:text>
+      <xsl:value-of select="substring($letters,1,1)"/>
+      <xsl:text>&nbsp;</xsl:text>
+    </a>
+
+    <xsl:if test="string-length($letters) &gt; 1">
+      <xsl:call-template name="letter-bar">
+        <xsl:with-param name="letters" select="substring($letters,2)"/>
+        <xsl:with-param name="first" select="false()"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:template>
+
+
+  <!--                                                    -->
+  <!-- template(s) for collecting all start letters       -->
+  <!-- of directives                                      -->
+  <!-- used in several documents                          -->
+  <!--                                                    -->
+  <xsl:template name="directive-startletters">
+
+    <xsl:call-template name="_squeeze-letters">
+      <xsl:with-param name="lastletter" select="''"/>
+
+      <xsl:with-param name="letters">
+        <xsl:for-each select="document(/*/modulefilelist/modulefile)/modulesynopsis/directivesynopsis[not(@location)]">
+        <xsl:sort select="name"/>
+          <xsl:value-of select="translate(substring(normalize-space(name),1,1),$lowercase,$uppercase)"/>
+        </xsl:for-each>
+      </xsl:with-param>
+    </xsl:call-template>
+
+  </xsl:template>
+  
+  <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="$lastletter != $current">
+      <xsl:value-of select="$current"/>
+    </xsl:if>
+    
+    <xsl:if test="string-length($letters) &gt; 1">
+      <xsl:call-template name="_squeeze-letters">
+        <xsl:with-param name="letters" select="substring($letters,2)"/>
+        <xsl:with-param name="lastletter" select="$current"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:template>
+
 </xsl:stylesheet>