Re: [xsl] Please look at my mini-template

Subject: Re: [xsl] Please look at my mini-template
From: Hermann Stamm-Wilbrandt <STAMMW@xxxxxxxxxx>
Date: Sat, 16 May 2009 02:34:08 +0200
Dmitri,

if you do not want to directly output the converted hex string as David
pointed out
a more comprehensive solution is using a func:function:

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  xmlns:func="http://exslt.org/functions";
  xmlns:ns="namespace"
>
  <xsl:output method="xml" />

  <xsl:template match="/hex2path">
    <xsl:value-of select="ns:hex2path(.)" />
  </xsl:template>

  <func:function name="ns:hex2path">
    <xsl:param name="str" />
    <xsl:choose>
      <xsl:when test="(string-length($str) &gt; 2)">
        <func:result select="concat(substring($str, 1, 2), '/',
                             ns:hex2path(substring($str, 3)))" />
      </xsl:when>
      <xsl:otherwise>
        <func:result select="$str" />
      </xsl:otherwise>
    </xsl:choose>
  </func:function>

</xsl:stylesheet>>


Mit besten Gr|_en / Best wishes,

Hermann Stamm-Wilbrandt
Developer, XML Compiler
WebSphere DataPower SOA Appliances
----------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschdftsf|hrung: Erich Baier
Sitz der Gesellschaft: Bvblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
----- Forwarded by Hermann Stamm-Wilbrandt/Germany/IBM on 05/16/2009 02:30
AM -----

             Dmitri Snytkine
             <d.snytkine@gmail
             .com>                                                      To
                                       xsl-list
             05/16/2009 01:41          <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
             AM                                                         cc

                                                                   Subject
             Please respond to         [xsl] Please look at my
             xsl-list@xxxxxxxx         mini-template
              lberrytech.com









Hello!

I needed this functionality:
Given the input of a HEX number (example 2A32BF42)
I needed to split the string in such a way that a '/' is inserted
after every 2 characters except that
the '/' should NOT be added at the end of string.

So 2A32BF42 has to become 2A/32/BF/42

This had to be done in XSLT 1 because its for browser-based
transformations.

I wrote a template for this and want to hear the opinion of the
experts. I just started learning XSLT about a week ago.
So what do you think?

Here it is:

<xsl:template name="hex2path">
        <xsl:param name="left" select="''"/>
        <xsl:param name="right"/>
        <xsl:choose>
            <xsl:when test="(string-length($right) > 2)">

                <xsl:call-template name="hex2path">
                    <xsl:with-param name="left">
                        <xsl:value-of select="concat($left,
concat(substring($right, 1, 2), '/'))"/>
                    </xsl:with-param>

<xsl:with-param name="right">

<xsl:value-of select="substring($right, 3)"/>

</xsl:with-param>
                </xsl:call-template>

            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="concat($left, $right)"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

Current Thread