<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:func="http://exslt.org/functions"
  xmlns:dp="http://www.datapower.com/extensions"
  extension-element-prefixes="dp"
>
  <xsl:output omit-xml-declaration="yes" />

  
  <func:function name="func:hex2num1">
    <xsl:param name="byte"/>

    <func:result select="dp:radix-convert($byte, 16, 10)"/>
  </func:function>


  <func:function name="func:hex2num2">
    <xsl:param name="byte"/>

    <func:result select="func:hexdig2num2(substring($byte,1,1))*16+
                         func:hexdig2num2(substring($byte,2,1))"/>
  </func:function>

  <func:function name="func:hexdig2num2">
    <xsl:param name="dig"/>

    <func:result>
      <xsl:choose>
        <xsl:when test="$dig='0'">0</xsl:when>
        <xsl:when test="$dig='1'">1</xsl:when>
        <xsl:when test="$dig='2'">2</xsl:when>
        <xsl:when test="$dig='3'">3</xsl:when>
        <xsl:when test="$dig='4'">4</xsl:when>
        <xsl:when test="$dig='5'">5</xsl:when>
        <xsl:when test="$dig='6'">6</xsl:when>
        <xsl:when test="$dig='7'">7</xsl:when>
        <xsl:when test="$dig='8'">8</xsl:when>
        <xsl:when test="$dig='9'">9</xsl:when>
        <xsl:when test="$dig='A'">10</xsl:when>
        <xsl:when test="$dig='B'">11</xsl:when>
        <xsl:when test="$dig='C'">12</xsl:when>
        <xsl:when test="$dig='D'">13</xsl:when>
        <xsl:when test="$dig='E'">14</xsl:when>
        <xsl:when test="$dig='F'">15</xsl:when>
      </xsl:choose>
    </func:result>
  </func:function>


  <func:function name="func:hex2num3">
    <xsl:param name="byte"/>

    <func:result select="func:hexdig2num3(substring($byte,1,1))*16+
                         func:hexdig2num3(substring($byte,2,1))"/>
  </func:function>

  <func:function name="func:hexdig2num3">
    <xsl:param name="dig"/>

    <func:result>
      <xsl:choose>
        <xsl:when test="$dig>=0"><xsl:value-of select="$dig"/></xsl:when>
        <xsl:when test="$dig='A'">10</xsl:when>
        <xsl:when test="$dig='B'">11</xsl:when>
        <xsl:when test="$dig='C'">12</xsl:when>
        <xsl:when test="$dig='D'">13</xsl:when>
        <xsl:when test="$dig='E'">14</xsl:when>
        <xsl:when test="$dig='F'">15</xsl:when>
      </xsl:choose>
    </func:result>
  </func:function>


  <xsl:template match="/">
    <xsl:value-of select="func:hex2num1(.)"/><xsl:text>&#10;</xsl:text>
    <xsl:value-of select="func:hex2num2(.)"/><xsl:text>&#10;</xsl:text>
    <xsl:value-of select="func:hex2num3(.)"/><xsl:text>&#10;</xsl:text>
  </xsl:template>
  
</xsl:stylesheet>