私も,同じ疑問を抱えていて,つい最近解決しました。
ので知識不足ですが,参考になれば。。。
concat,substringを利用して以下のようにしてみました。
下記の場合,文字長=7として動作させています。
質問では,空白によるパディングですが,仮に0詰めであれば,
簡略に,
<xsl:value-of select="format-number(text(), '0000000')" />
とすればよいかと。
=== XML ===
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="numbers.xsl"?>
<numbers>
<number>1</number>
<number>12</number>
<number>123</number>
<number>1234</number>
<number>12345</number>
</numbers>
=== XSLT ===
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="
http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="Shift_JIS"/>
<xsl:template match="number">
<xsl:value-of select="concat(substring(' ',1,7-string-length(text())),text())" />
</xsl:template>
</xsl:stylesheet>