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 |
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@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) < $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 XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
XSLT element usage on textual outut, Albert Tsun | Thread | RE: How to pad space to a text node, Albert Tsun |
XSLT element usage on textual outut, Albert Tsun | Date | RE: Error 80004005 eof - Microsoft , Kay Michael |
Month |