Greetings,
I'm having trouble understanding data types and using the function
xsl:sequence.
I have one common template that I call to create padding in my output
document:
<xsl:template name="pad-number">
<xsl:param name="max" />
<xsl:param name="char" />
<xsl:sequence select="string-join((for $i in 1 to xs:integer($max) return
$char), '')"/>
</xsl:template>
So if I am padding for a text field, I pass in   for a space and if
it's a numeric field I use '0'.
My problem is (and I know this sounds silly) whenever I change from a text
to a numeric field there is an extra space inserted into the xsl:sequence
output. This is a space and not the character I am passing into this
template. So, if I use a tilda '~' instead of ' ' I see the
appropriate number of tildas plus a space (hex code 20) in my output.
I do not have this problem when I am not changing from numeric to text, or
if I have consecutive numerics or consecutive text fields.
Perhaps I am not using the $max variable correctly? I found the only way to
get it to work is when I specify xs:integer around it because the portion of
code that calls this template is performing a calculation and I think the
processor (Saxon 8.something) is creating a mandotory xs:double whenever a
calculation is performed.
This is probably a logic problem and has nothing to do with XSLT syntax but
I just thought I'd throw this out here and maybe one of the gurus on this
list could point me in the right direction.
Thanks,
Jim Neff
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--