Ваша текущая функция выполняет только правое заполнение, поэтому вам нужна новая функция для выполнения левого заполнения
<xsl:function name="func:padStrLeft">
<xsl:param name="str"/>
<xsl:param name="chr"/>
<xsl:param name="len"/>
<xsl:variable name="pad">
<xsl:for-each select="1 to $len">
<xsl:value-of select="$chr" />
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="substring(concat($pad, $str), string-length($str) + 1)"/>
</xsl:function>
В качестве альтернативы, чтобы сделать это в одной функции, добавьте новый параметр, чтобы указать, хотите ли вызаполнение или нет
<xsl:function name="func:padStr">
<xsl:param name="str"/>
<xsl:param name="chr"/>
<xsl:param name="len"/>
<xsl:param name="rightpad" />
<xsl:variable name="pad">
<xsl:for-each select="1 to $len">
<xsl:value-of select="$chr" />
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="if ($rightpad)
then substring(concat($str,$pad),1,$len)
else substring(concat($pad, $str), string-length($str) + 1)"/>
</xsl:function>
Затем назовите это так:
<xsl:value-of select="func:padStr($Prefix,' ',6,false())"/>
<xsl:value-of select="func:padStr($Base,' ',8,false())"/>
<xsl:value-of select="func:padStr($Suffix,' ',8,true())"/>