If you're using 2.0, you can write a function like this:
<xsl:function name="f:pad">
<xsl:param name="inputField"/>
<xsl:param name="length"/>
<xsl:value-of select="concat(substring($inputField, 1, $length),
substring($lotsOfSpaces, 1, $length - string-length($input-field))"/>
</xsl:function>
where lotsOfSpaces is a global variable containing a long string of spaces.
Then you can make a sequence of calls like this:
<xsl:value-of select="f:pad(ZINVADJIN, 10)"/>
<xsl:value-of select="f:pad(XSITE, 5)"/>
etc.
If you're using 1.0, you can write a named template very similar to the above, and call it using xsl:call-template - it's just a bit more verbose.
For padding numeric fields to a fixed width, you can use the built-in format-number() function, for example format-number(ERFMG, '00000.000').
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference