Liste de bâtiment avec xslt

Je suis en train de construire une liste qui analyse l'ensemble de mon document xml. J'ai besoin de la liste numérique des noms alors l'alpha noms. La liste devrait ressembler à quelque chose comme ça.

6
6600 Training
6500 Training

A
Accelerated Training

T
Training

Ceci est un extrait de l'xml.

<courses>
    <course>         
        <name>Accelerated Training</name>
    </course>
    <course>        
        <name>6600 Training</name>
    </course>   
         <course>        
        <name>Training</name>
    </course>
    <course>        
        <name>6500 Training</name>
    </course>   

</courses>   

C'est le code que j'utilise actuellement. J'ai trouvé ça dans une autre question sur le site et de pouvoir la personnaliser un peu. Actuellement, il ne tient pas compte de mon besoin de l'analyse en nombre et aussi des rendements de l'ordre alphabétique.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

  <xsl:output omit-xml-declaration="yes" indent="yes"/> 
  <xsl:variable name="vLower" select= "'abcdefghijklmnopqrstuvwxyz'"/> 
  <xsl:variable name="vUpper" select= "'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/> 

  <xsl:key name="kTitleBy1stLetter" match="courses/course"  use="substring(name,1,1)"/>    

  <xsl:template match="/*">      

    <xsl:for-each select="course [generate-id() = generate-id(key('kTitleBy1stLetter', substring(name,1,1)) [1] ) ]">        
      <xsl:variable name="v1st" select="substring(name,1,1)"/>        
      <h2><xsl:value-of select="$v1st"/></h2>        
      <div class="{translate($v1st, $vUpper, $vLower)}-content">
        <ul>
          <xsl:for-each select="key('kTitleBy1stLetter',$v1st)">               
            <li><xsl:value-of select="name"/></li>
          </xsl:for-each>          
        </ul>      
      </div>      
    </xsl:for-each>        
  </xsl:template>
</xsl:stylesheet>
InformationsquelleAutor BillZ | 2009-04-09