你不需要的擴展功能這個根本。
使用這種純XSLT實現:
<xsl:template name="padNumber">
<xsl:param name="pValue"/>
<xsl:param name="pLength"/>
<xsl:value-of select=
"concat(substring(substring($vZeroes,1,$pLength),
string-length($pValue) +1),
$pValue)
"/>
</xsl:template>
下面是一個完整的例子:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="vZeroes" select=
"'000000000000000000000000000000000000000'"/>
<xsl:template match="/">
<xsl:call-template name="padNumber">
<xsl:with-param name="pValue" select="12345"/>
<xsl:with-param name="pLength" select="8"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="padNumber">
<xsl:param name="pValue"/>
<xsl:param name="pLength"/>
<xsl:value-of select=
"concat(substring(substring($vZeroes,1,$pLength),
string-length($pValue) +1),
$pValue)
"/>
</xsl:template>
</xsl:stylesheet>
當這種轉變是在任何XML文檔應用(在該演示中使用),產生想要的,正確的結果:
00
您可以進一步參數要使用的所需填充字符:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="vZeroes" select=
"'000000000000000000000000000000000000000'"/>
<xsl:template match="/">
<xsl:call-template name="padNumber">
<xsl:with-param name="pValue" select="12345"/>
<xsl:with-param name="pLength" select="8"/>
<xsl:with-param name="pPadChar" select="'*'"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="padNumber">
<xsl:param name="pValue"/>
<xsl:param name="pLength"/>
<xsl:param name="pPadChar" select="'0'"/>
<xsl:variable name="vZeroes" select="translate($vZeroes, '0', $pPadChar)"/>
<xsl:value-of select=
"concat(substring(substring($vZeroes,1,$pLength),
string-length($pValue) +1),
$pValue)
"/>
</xsl:template>
</xsl:stylesheet>
當進行這種轉變,其結果是現在:
***12345
不是一個答案,但你可以使用'號格式做到這一點不帶擴展功能($值,子(「0000000000000000000000」,1,$長度))'(如果你需要添加更多的零) –