This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

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



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.

PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]