我需要将XML转换为另一种XML。
我需要做的是修改其中一个元素的值。在源头我有这个
<NUM>I19071230</NUM>
我需要用固定的'ABCD'替换第一个字母。所以它会变成这个
ABCD19071230
然后我需要确保总长度为14.如果不是,则在ABCD之间添加0,输出应该如下所示。
ABCD0019071230
我需要将此值存储在变量中,以便可以重复使用。 我正在使用XSLT 1.0。在此先感谢。
答案 0 :(得分:2)
使用此XPath表达式:
concat(
substring(
'ABCD0000000000',
1,
15 - string-length(NUM)
),
substring(NUM,2)
)
答案 1 :(得分:2)
使用强>:
<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
字符串值的长度,并验证在所有情况下都会生成正确的结果。