This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: How to pad space to a text node to make it have specfic lengt h?
- To: xsl-list at mulberrytech dot com
- Subject: RE: How to pad space to a text node to make it have specfic lengt h?
- From: "Albert Tsun" <albert dot tsun at excel dot com dot hk>
- Date: Fri, 20 Oct 2000 14:56:50 +0800
- Reply-To: xsl-list at mulberrytech dot com
Hi Nate,
Thanks. It works for me most of the cases, but I get a problem if I call
the template this way:
XML source:
<footer>** End of Report **</footer>
XSL stylesheet :
....
....
<xsl:template match="footer"
<xsl:call-template name="centre-pad">
<xsl:with-param name="padChar" select=" "/>
<xsl:with-param name="padVar" select="."/>
<!--^^ This does not work, how can I pass the
current node value to template, please help>
<xsl:with-param name="length" select="132"/>
</xsl:call-template>
</xsl:template>
..
..
Thanks in advane
Regards,
Albert Tsun
Excel Tech Int. (HK) Ltd
Nate Austin <naustin@decisionsys.com> on 10/18/2000 11:48:55 PM
Please respond to xsl-list@mulberrytech.com
To: "'xsl-list@mulberrytech.com'" <xsl-list@mulberrytech.com>
cc: (bcc: Albert Tsun/Excel)
Subject: RE: How to pad space to a text node to make it have specfic lengt
h?
Albert -
These are the templates I use to pad on the left or right with any
character
passed in:
<xsl:template name="prepend-pad"> <!-- recursive template to right
justify and prepend-->
<!-- the value with whatever padChar
is passed in -->
<xsl:param name="padChar"> </xsl:param>
<xsl:param name="padVar"/>
<xsl:param name="length"/>
<xsl:choose>
<xsl:when test="string-length($padVar) < $length">
<xsl:call-template name="prepend-pad">
<xsl:with-param name="padChar" select="$padChar"/>
<xsl:with-param name="padVar" select="concat($padChar,$padVar)"/>
<xsl:with-param name="length" select="$length"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring($padVar,string-length($padVar) -
$length + 1)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="append-pad"> <!-- recursive template to left
justify and append -->
<!-- the value with whatever padChar
is passed in -->
<xsl:param name="padChar"> </xsl:param>
<xsl:param name="padVar"/>
<xsl:param name="length"/>
<xsl:choose>
<xsl:when test="string-length($padVar) < $length">
<xsl:call-template name="append-pad">
<xsl:with-param name="padChar" select="$padChar"/>
<xsl:with-param name="padVar" select="concat($padVar,$padChar)"/>
<xsl:with-param name="length" select="$length"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring($padVar,1,$length)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
The 'padChar' param passed in could be as many characters as you want,
actually. 'padVar' is the variable to pad, and length is length,
obviously.
Most of the XSLT I do is for fixed-length text files, and these haven't
failed me yet.
Hope this helps,
Nate
>Date: Wed, 18 Oct 2000 16:46:26 +0800
>From: "Albert Tsun" <albert.tsun@excel.com.hk>
>Subject: How to pad space to a text node to make it have specfic length?
>
>Hi all,
>
>I am trying hard to pad space to a text node so that the data value
>will have a specific length.
>
>XML Source :
><records>
> <record>
> <field1>abc</field1>
> <field2>abcdef</field2>
> </record>
> <record>
> <field1>123</field1>
> <field2>12345</field2>
> </record>
></records>
>
>My current task is to transform it to a fixed length record files which
>look like
>abc | abcdef|
>123 | 12345|
>
>
>I want to pass the <field1> to template "padleft" with field1 text node
and
>desired length
>and <field2> to "padright" in order to make a fixed length output.
However,
>with all the
>String functions in XSLT, I can't figure out how I can implement this.
>would some help me
>and give me some sample code, please.
>XSL :
><xsl:template name="padleft">
> <xsl:param name="src"/>
> <xsl:param name="len"/>
>
> <.????? How to pad spaces to $src to make it a $len longed text
>????????>
>
>
></xsl:template>
>
>Many Thanks in advance
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list