0

I have a string in XML that will look like below:

NNNANNNNN.NNNNNN

Where N is a numeric value (can be as long as 10 digits) and A is a single Alphabet.

What I need is to get the string after the Alphabet and before the decimal value and return the value with leading zeroes (10 characters max with the extracted value)

For Example I have

123A123456.789 

then the result will be

0000123456

Can anyone point me in the right direction using XSLT 1.0.

2 Answers 2

2

I would do it this way:

<xsl:variable name="alpha" select="translate($yourstring, '0123456789.', '')" />
<xsl:variable name="int" select="substring-before(substring-after($yourstring, $alpha), '.')" />
<xsl:value-of select="format-number($int, '0000000000')" />

return the value with leading zeroes (10 characters max with the extracted value)

Not quite sure what you mean by that. If the extracted number can be longer than 10 characters, and you want to limit it to the 10 rightmost digits, then use:

<xsl:value-of select="substring(concat('0000000000', $int), 1 + string-length($int))" />

as the last step, instead of format-number().

Sign up to request clarification or add additional context in comments.

Comments

2

Pointing you to the right direction:

1) Use translate function to translate the alphabet character to some known thing:

translate($myvalue,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','**************************')

2) Wrap that in substring-before() using the "." to get everything before the "."

3) Wrap that in substring-after() using the character you chose above (" * " in this case) to get everything afer the " * "

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.