[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: How to pad space to a text node to make it have specfic

Subject: RE: How to pad space to a text node to make it have specfic lengt h?
From: "Albert Tsun" <albert.tsun@xxxxxxxxxxxx>
Date: Fri, 20 Oct 2000 14:56:50 +0800
padding spaces in excel

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="&#160;"/>
            <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@xxxxxxxxxxxxxxx> on 10/18/2000 11:48:55 PM

Please respond to xsl-list@xxxxxxxxxxxxxxxx

To:   "'xsl-list@xxxxxxxxxxxxxxxx'" <xsl-list@xxxxxxxxxxxxxxxx>
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) &lt; $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) &lt; $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







 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.