|
Subject: RE: How to pad space to a text node to make it have specfic lengt h? From: Nate Austin <naustin@xxxxxxxxxxxxxxx> Date: Wed, 18 Oct 2000 10:48:55 -0500 |
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@xxxxxxxxxxxx>
>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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Configuring JWS for XML, Shukla, Amit | Thread | New XSL working draft published, Max Froumentin |
| RE: Using xsl:choose..., Eliot, Topher | Date | New XSL working draft published, Max Froumentin |
| Month |