xsl-list
[Top] [All Lists]

Re: [xsl] replacing of characters based on position

2010-11-16 13:59:04

 step1:550e8400-e29b-41d4-a716-446655440000 to
 550e84000e29b041d40a7160446655440000
      This one we can fix by writing the following  xsl in xslt 1.0


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet  
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0"> 
  <xsl:template match="/">
  <xsl:variable name="inputtext" select="/Number" />
  <xsl:variable name="searchContent" select="'-'"/>
    <xsl:variable name="replacetext" select="'0'"/>
  <xsl:message>
         input <xsl:value-of select="$inputtext"/>
      </xsl:message>
        <xsl:message>
         search <xsl:value-of select="$searchContent"/>
      </xsl:message>
        <xsl:message>
         replace <xsl:value-of select="$replacetext"/>
      </xsl:message>
      
    <xsl:call-template name="search-and-replace" >
     <xsl:with-param name="input" select="$inputtext" />
     <xsl:with-param name="search-string" select="$searchContent" />
     <xsl:with-param name="replace-string" select="$replacetext" />
      
    </xsl:call-template>
  </xsl:template>
 <xsl:template name="search-and-replace">
  
   <xsl:param name="input" />
   <xsl:param name="search-string"/>
   <xsl:param name="replace-string"/>
   
   <xsl:choose>
    <xsl:when test="$search-string and 
                    contains($input,$search-string)">
       <xsl:message> inside when
        </xsl:message>                 
       <xsl:value-of
           select="substring-before($input,$search-string)"/>
       <xsl:value-of select="$replace-string"/>
       <xsl:call-template name="search-and-replace">
         <xsl:with-param name="input"
               select="substring-after($input,$search-string)"/>
         <xsl:with-param name="search-string"
               select="$search-string"/>
         <xsl:with-param name="replace-string"
               select="$replace-string"/>
       </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$input"/>
    </xsl:otherwise>
   </xsl:choose>
  </xsl:template>                
 <!--  <xsl:template match="text">
   <xsl:call-template name="search-and-replace">
     <xsl:with-param name="input" select="text()" />
     <xsl:with-param name="search-string" select="'-'" />
     <xsl:with-param name="replace-string" select="'0'" />
   </xsl:call-template>    
  </xsl:template>-->
</xsl:stylesheet>


 step2:550e84000e29b041d40a7160446655440000   to
 550e8400-e29b-41d4-a716-446655440000
         how can i do this based on position number/index[9]


--- On Tue, 16/11/10, ram <ram_kurra(_at_)yahoo(_dot_)co(_dot_)in> wrote:

From: ram <ram_kurra(_at_)yahoo(_dot_)co(_dot_)in>
Subject: Re: [xsl] replacing of characters based on position
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date: Tuesday, 16 November, 2010, 9:21 PM
well, Its part of the requirement
where i have replace 0 in place of '-', so that when we get
this uuid back, we will replace '0' with '-'. 
         The reason of this
mq is replacing - with 0 because - is not a right
hexadecimal value. before droping this uuid in mq, i want to
replace it with 0 then once i get the response from mq i
want to replace 0 with - so that i will make sure that
uniqueness of uuid.

--- On Tue, 16/11/10, Imsieke, Gerrit, le-tex 
<gerrit(_dot_)imsieke(_at_)le-tex(_dot_)de>
wrote:

From: Imsieke, Gerrit, le-tex <gerrit(_dot_)imsieke(_at_)le-tex(_dot_)de>
Subject: Re: [xsl] replacing of characters based on
position
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date: Tuesday, 16 November, 2010, 11:55 AM
On 16.11.2010 07:09, ram wrote:
well, i am using xslt 2.0. i need the position
based
replacement rather than regexp.
           The
reason is i want reverse back  '0' with -  later
at some point , so thaat i can guarente that same uuid
is
going to be generated after reversal.

step1:550e8400-e29b-41d4-a716-446655440000 to
550e84000e29b041d40a7160446655440000


step2:550e84000e29b041d40a7160446655440000   to
550e8400-e29b-41d4-a716-446655440000

Bookkeeping (saving the positional data and later
acting
upon this 
separately stored information) is quite cumbersome.
If you tell us why there need to be zeros in the
middle of
the process, 
we might come up with an alternative solution that is
less
expensive in 
terms of bookkeeping, such as:
- replacing '-' with a different unique character
- wrapping the whole uuid in a newly created element
(by
virtue of 
xsl:analyze-string) so that its content may be
treated
differently than 
the surroundings
- generating an element in lieu of '-' (also using
xsl:analyze-string)
- ...

-Gerrit




--- On Tue, 16/11/10, David Carlisle<davidc(_at_)nag(_dot_)co(_dot_)uk> 
wrote:

From: David Carlisle<davidc(_at_)nag(_dot_)co(_dot_)uk>
Subject: Re: [xsl] replacing of characters
based
on position
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Cc: "ram"<ram_kurra(_at_)yahoo(_dot_)co(_dot_)in>
Date: Tuesday, 16 November, 2010, 4:40 AM
On 15/11/2010 22:44, ram wrote:
Hi,
           I
have xsl
variable which holds the following uuid
value
(550e8400-e29b-41d4-a716-446655440000) which
has
'-' at
9-14-19-24 positions.
        I want to go these
positons
9-14-19-24 and replace the characters '-'
with
zero's.
         Is there
any function
such as replace(position
values,character,replace
character)
available in xslt.



you should always say whether you are using
xslt 1
or 2,
especially if asking about string handling,

do you actually need position based replace,
(that
would be
easy using xslt 2 regexp, or only slightly
more
verbose
using a mixture of substring and concat) but
your
original
problem statement could be solved by
translate(.,'-','0')

David


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--