RGB from hex colours

1. XSL converter for colors values(types)

1.

XSL converter for colors values(types)

Mike Brown


  > Is there a converter/XSL stylesheet that already exists for 
  transferring
  > hexadecimal color values, i.e., 0xFFFFFF,
  > to RGB values, i.e., (255, 255, 255) - ?
  > 
  > Or anything that can help me converting one from the other without
  > requiring me to reinvent the wheel?
  

Oh, just reinvent the wheel :)

  <?xml version="1.0" encoding="utf-8"?>
  <xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  
    <xsl:output method="xml" indent="yes"/>
  
   <xsl:template match="/">
      <!-- the color hexcode to split into decimal r,g,b components -->
      <xsl:variable name="hexval" select="'EAEAD9'"/>
      <result>
        <hex>
          <xsl:value-of select="$hexval"/>
        </hex>
        <dec>
          <R>
            <xsl:call-template name="hexpairs-to-dec">
              <xsl:with-param name="pair" select="1"/>
              <xsl:with-param name="hexval" select="$hexval"/>
            </xsl:call-template>
          </R>
          <G>
            <xsl:call-template name="hexpairs-to-dec">
              <xsl:with-param name="pair" select="2"/>
              <xsl:with-param name="hexval" select="$hexval"/>
            </xsl:call-template>
          </G>
          <B>
            <xsl:call-template name="hexpairs-to-dec">
              <xsl:with-param name="pair" select="3"/>
              <xsl:with-param name="hexval" select="$hexval"/>
            </xsl:call-template>
          </B>
        </dec>
      </result>
    </xsl:template>
  
    <xsl:template name="hexpairs-to-dec">
      <xsl:param name="pair" select="1"/>
      <xsl:param name="hexval"/>
      <xsl:variable name="hexpair" 
  select="substring($hexval,$pair * 2 - 1,2)"/>
      <xsl:if test="$hexpair">
        <xsl:variable name="hex" select="'0123456789ABCDEF'"/>
        <xsl:value-of 
  select="(string-length(substring-before($hex,
                         substring($hexpair,1,1))))*16 + 
                         string-length(
          substring-before($hex,substring($hexpair,2,1)))"/>
      </xsl:if>
    </xsl:template>
  
  </xsl:stylesheet>