从XSL1.0中的字母数字字符中删除前导零?

Kun*_*dan 2 xml xslt xslt-1.0

我得到了一个输入00000BE0891.116.828.我必须从中删除点和前导零.我尝试了translate()从中删除点的功能.

然后我尝试了string(number(00000BE0891.116.828)),但它返回了NaN,因为number()函数不验证字母表.有没有人有什么建议?

Tim*_*m C 6

一种方法可能是使用translate删除所有零,然后将告诉您第一个非零字符是什么.然后,您可以使用substring-after以这种方式切断前导零.

<xsl:variable name="firstNonZero" 
              select="substring(translate($number, '0', ''), 1, 1)" />
<xsl:variable name="noLeadingZeroes"
              select="concat($firstNonZero, substring-after($number, $firstNonZero))" />
<xsl:value-of select="translate($noLeadingZeroes, '.', '')" />
Run Code Online (Sandbox Code Playgroud)

(其中$ number是您的起始输入"00000BE0891.116.828")

或者,如果你想将它组合成一个表达式......

<xsl:value-of 
    select="translate(concat(substring(translate($number, '0', ''), 1, 1), substring-after($number, substring(translate($number, '0', ''), 1, 1))), '.', '')" />
Run Code Online (Sandbox Code Playgroud)