Использование :
<xsl:variable name="vComposed" select=
"concat('ABCD',
substring('000000000000000',
1,
14 -string-length(NUM) -3),
substring(NUM, 2, 10)
)
"/>
Вот краткое преобразование с использованием этой переменной :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="vComposed" select=
"concat('ABCD',
substring('000000000000000',
1,
14 -string-length(NUM) -3),
substring(NUM, 2, 10)
)
"/>
<xsl:value-of select="$vComposed"/>
</xsl:template>
</xsl:stylesheet>
Когда это преобразованиеприменяется к предоставленному документу XML:
<NUM>I19071230</NUM>
желаемый, правильный результат получается :
ABCD0019071230
Вы можете изменить длинустроковое значение NUM
и убедиться, что во всех случаях получен правильный результат.