Re: [xsl] replacing of characters based on position

Subject: Re: [xsl] replacing of characters based on position
From: "Imsieke, Gerrit, le-tex" <gerrit.imsieke@xxxxxxxxx>
Date: Tue, 16 Nov 2010 07:25:38 +0100
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)
- ...


--- On Tue, 16/11/10, David Carlisle<davidc@xxxxxxxxx> wrote:

From: David Carlisle<davidc@xxxxxxxxx>
Subject: Re: [xsl] replacing of characters based on position
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Cc: "ram"<ram_kurra@xxxxxxxxxxx>
Date: Tuesday, 16 November, 2010, 4:40 AM
On 15/11/2010 22:44, ram wrote:
          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')


Current Thread