<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- | Converts a fractional number into a UTF-8 character. | | @param quantity - The numeric value to convert. +--> <xsl:template name="utf-fraction"> <xsl:param name="quantity" /> <xsl:param name="rounding" select="false()" /> <xsl:variable name="frac"> <xsl:value-of select="$quantity mod 1" /> </xsl:variable> <xsl:variable name="whole"> <xsl:if test="$quantity - $frac != 0"> <xsl:value-of select="$quantity - $frac" /> </xsl:if> </xsl:variable> <xsl:choose> <xsl:when test="$frac = '0.5'"><xsl:value-of select="$whole" />½</xsl:when> <xsl:when test="$frac = '0.333'"><xsl:value-of select="$whole" />⅓</xsl:when> <xsl:when test="$frac = '0.666'"><xsl:value-of select="$whole" />⅔</xsl:when> <xsl:when test="$frac = '0.25'"><xsl:value-of select="$whole" />¼</xsl:when> <xsl:when test="$frac = '0.75'"><xsl:value-of select="$whole" />¾</xsl:when> <xsl:when test="$frac = '0.2'"><xsl:value-of select="$whole" />⅕</xsl:when> <xsl:when test="$frac = '0.4'"><xsl:value-of select="$whole" />⅖</xsl:when> <xsl:when test="$frac = '0.6'"><xsl:value-of select="$whole" />⅗</xsl:when> <xsl:when test="$frac = '0.8'"><xsl:value-of select="$whole" />⅘</xsl:when> <xsl:when test="$frac = '0.166'"><xsl:value-of select="$whole" />⅙</xsl:when> <xsl:when test="$frac = '0.833'"><xsl:value-of select="$whole" />⅚</xsl:when> <xsl:when test="$frac = '0.125'"><xsl:value-of select="$whole" />⅛</xsl:when> <xsl:when test="$frac = '0.375'"><xsl:value-of select="$whole" />⅜</xsl:when> <xsl:when test="$frac = '0.625'"><xsl:value-of select="$whole" />⅝</xsl:when> <xsl:when test="$frac = '0.875'"><xsl:value-of select="$whole" />⅞</xsl:when> <!-- Round up amounts to attain exact fraction of 1/2 or 0. --> <xsl:when test="($frac != '0') and $rounding"><xsl:call-template name="utf-fraction"><xsl:with-param name="quantity" select="round(($quantity * 2) + 0.5) div 2" /><xsl:with-param name="rounding" select="false()" /></xsl:call-template></xsl:when> <xsl:otherwise><xsl:value-of select="$quantity" /></xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>