Link to home
Create AccountLog in
Avatar of Darius
DariusFlag for Lithuania

asked on

xslt 1.0 - Formatting string (Substrings from the End of a String)

Hi guys,

Please assist with this validation.
Have an issue to substring from the End of a String.
Please see below

           <xsl:variable name="originalValue" select="'[some Values]'" />

                <xsl:variable name="valueUpdated">
                  <xsl:call-template name="cut-leading-zeros">
                    <xsl:with-param name="str" select="normalize-space($originalValue)" />
                  </xsl:call-template>
                </xsl:variable>


                <!-- If original values does not have leading zeros
                '123'
                '12346578912120112455' 
                '123465789121234567890120222'
                 . . .
                  concat orginal value with prefix 'BX' 
                  -->
                <xsl:if test="$originalValue">
                  <xsl:value-of select="concat('BX', $originalValue)"/>
                </xsl:if>



                <!-- If updated values after removed leading zeros greather then 18
                  '000012346578912120112455' 
                  '0000123465789121234567890' 
                  '00001234657891212345678901' 
                  . . .
                  concat updated value with prefix 'BX' 
                  -->
                <xsl:if test="string-length($valueUpdated) &gt; 18">
                  <xsl:value-of select="concat('BX', $valueUpdated)"/>
                </xsl:if>




                <!-- If original values after removed leading zeros less then 18
                  '00000000091234567890'
                  '000000000912345678901' 
                  '0000000009123456789012'
                  . . .
                  substring from the End of a String to 18 digits
                  and concat value with prefix 'BX' 
                  expect values:
                  'BX000000091234567890'
                  'BX000000912345678901' 
                  'BX000009123456789012'
                  -->
                <xsl:if test="string-length($valueUpdated) &lt; 18">
                  <!--max length 20:  'BX' and value-->
                  . . . to do . . .
                </xsl:if>

       </xsl:template>


  <xsl:template name="cut-leading-zeros">
    <xsl:param name="str"/>
    <xsl:choose>
      <xsl:when test="substring($str, 1, 1) = '0'">
        <xsl:call-template name="cut-leading-zeros">
          <xsl:with-param name="str" select="substring($str, 2)"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$str"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

Open in new window


Thank you
Darius
ASKER CERTIFIED SOLUTION
Avatar of Gertone (Geert Bormans)
Gertone (Geert Bormans)
Flag of Belgium image

Link to home
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
See answer
Avatar of Darius

ASKER

100% thanks Geert!