glossary.xsl 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
  3. <xsl:template match="glossary">
  4. <xsl:copy>
  5. <xsl:apply-templates select="@*"/>
  6. <xsl:apply-templates select="title"/>
  7. <xsl:apply-templates select="glossentry" mode="div">
  8. <xsl:sort select="translate(glossterm, 'azertyuiopqsdfghjklmwxcvbn', 'AZERTYUIOPQSDFGHJKLMWXCVBN' )"/>
  9. </xsl:apply-templates>
  10. </xsl:copy>
  11. </xsl:template>
  12. <xsl:template match="glossentry" mode="div">
  13. <xsl:variable name="letter" select="translate(substring(glossterm, 1, 1), 'azertyuiopqsdfghjklmwxcvbn', 'AZERTYUIOPQSDFGHJKLMWXCVBN' )"/>
  14. <xsl:if test="not(preceding-sibling::glossentry[translate(substring(glossterm, 1, 1), 'azertyuiopqsdfghjklmwxcvbn', 'AZERTYUIOPQSDFGHJKLMWXCVBN' )=$letter])">
  15. <glossdiv id="gloss-{$letter}">
  16. <title>
  17. <xsl:value-of select="$letter"/>
  18. </title>
  19. <xsl:apply-templates select="parent::*/glossentry[translate(substring(glossterm, 1, 1), 'azertyuiopqsdfghjklmwxcvbn', 'AZERTYUIOPQSDFGHJKLMWXCVBN' )=$letter]">
  20. <xsl:sort select="translate(glossterm, 'azertyuiopqsdfghjklmwxcvbn', 'AZERTYUIOPQSDFGHJKLMWXCVBN' )"/>
  21. </xsl:apply-templates>
  22. </glossdiv>
  23. </xsl:if>
  24. </xsl:template>
  25. <xsl:template match="*|@*">
  26. <xsl:copy>
  27. <xsl:apply-templates select="@*"/>
  28. <xsl:apply-templates/>
  29. </xsl:copy>
  30. </xsl:template>
  31. </xsl:stylesheet>