<!-- UtilText.xsl: Common text formatting routines --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- Replace new lines with html <br> tags --> <xsl:template name="br-replace"> <xsl:param name="text"/> <xsl:variable name="cr" select="'
'"/> <xsl:choose> <!-- If the value of the $text parameter contains a carriage return... --> <xsl:when test="contains($text,$cr)"> <!-- Return the substring of $text before the carriage return --> <xsl:value-of select="substring-before($text,$cr)"/> <!-- And construct a <br/> element --> <br/> <!-- | Then invoke this same br-replace template again, passing the | substring *after* the carriage return as the new "$text" to | consider for replacement +--> <xsl:call-template name="br-replace"> <xsl:with-param name="text" select="substring-after($text,$cr)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$text"/> </xsl:otherwise> </xsl:choose> </xsl:template> <!-- Replace two consecutive spaces w/ 2 non-breaking spaces --> <xsl:template name="sp-replace"> <xsl:param name="text"/> <!-- NOTE: There are two spaces ** here below --> <xsl:variable name="sp"><xsl:text> </xsl:text></xsl:variable> <xsl:choose> <xsl:when test="contains($text,$sp)"> <xsl:value-of select="substring-before($text,$sp)"/> <xsl:text>  </xsl:text> <xsl:call-template name="sp-replace"> <xsl:with-param name="text" select="substring-after($text,$sp)"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$text"/> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> |