[xsl] xsl not powerfull enough (was: re: xsl-sort)

Subject: [xsl] xsl not powerfull enough (was: re: xsl-sort)
From: Goetz Bock <bock@xxxxxxxxxxx>
Date: Sat, 23 Dec 2000 17:45:18 +0100
On Sat, Dec 23 '00 at 08:48, Jack A. Zucker wrote:
> Maybe I need to do more homework but it seems that xslt is not a very rich
> programming language for general-purpose stuff which is why I was previously
> using script to do certain things. For example, how do you output a number
> as a hex string in xsl(t) without resorting to indexing into an array of
> characters representing the hex digits?
The same way you do it with any other programmin language that does not
bring a function for this (how did you do it?):

<xsl:template name="printHex">
  <xsl:param name="number">0</xsl:param>

  <xsl:variable name="low">
    <xsl:value-of select="$number mod 16"/>
  </xsl:variable>

  <xsl:variable name="high">
    <xsl:value-of select="floor($number div 16)"/>
  </xsl:variable>

  <xsl:choose>
    <xsl:when test="$high &gt; 0">
      <xsl:call-template name="printHex">
        <xsl:with-param name="number">
          <xsl:value-of select="$high"/>
        </xsl:with-param>
      </xsl:call-template>  
    </xsl:when>
    <xsl:otherwise>
      <xsl:text>0x</xsl:text>
    </xsl:otherwise>
  </xsl:choose>  

  <xsl:choose>
    <xsl:when test="$low &lt; 10">
      <xsl:value-of select="$low"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:variable name="temp">
        <xsl:value-of select="$low - 10"/>
      </xsl:variable>

      <xsl:value-of select="translate($temp, '012345', 'ABCDEF')"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>  

It XSL-T's div would have been a div and not a / this would have taken
about 5 min ...

    Goetz.

Attachment: pgp00003.pgp
Description: PGP signature

Current Thread