Thursday, May 27, 2010

XSLT String Padding

Create the Template

  <xsl:template name="leftjustify">
    <xsl:param name="content"/>
    <xsl:param name="width"/>

    <xsl:choose>
      <xsl:when test="string-length($content) &gt; $width">
        <xsl:value-of select="substring($content,1,$width)"/>
      </xsl:when>

      <xsl:otherwise>
        <xsl:value-of select="$content"/>
        <xsl:call-template name="spaces">
          <xsl:with-param name="length">
            <xsl:value-of select="$width - string-length($content)"/>
          </xsl:with-param>
        </xsl:call-template>
      </xsl:otherwise>

    </xsl:choose>

  </xsl:template>

  <xsl:template name="spaces">
    <xsl:param name="length"/>
    <!-- the value of this next variable is 255 spaces.. -->
    <xsl:variable name="longstringofspaces">
      <xsl:text>                                                                                                                                                                                                                                                               </xsl:text>
    </xsl:variable>
    <xsl:value-of select="substring($longstringofspaces,1,$length)"/>
  </xsl:template>




Usage:


<xsl:call-template name="leftjustify">
      <xsl:with-param name="content">You can do this</xsl:with-param>
      <xsl:with-param name="width">40</xsl:with-param>
    </xsl:call-template>