Re: [xsl] whitespace as a parameter to a template (replace linefeed with li nefeed tab)

Subject: Re: [xsl] whitespace as a parameter to a template (replace linefeed with li nefeed tab)
From: Chris Nolte <cgn7094@xxxxxxxxx>
Date: Wed, 30 May 2001 15:19:47 -0700 (PDT)
I'll jump in, since it's perhaps the only question that will be asked on
this list where I actually know the answer!

Try something like:
<xsl:variable name='lf'><xsl:text>&#10;</xsl:text></xsl:variable>
<xsl:variable name='tab'><xsl:text>&#9;</xsl:text></xsl:variable>
<xsl:variable name='lftab'><xsl:copy-of select='$lf'/><xsl:copy-of
select='$tab'/></xsl:variable>

and 

<xsl:call-template name="do-replace">
   <xsl:with-param name="text" select="$x"/>
   <xsl:with-param name="replace" select="$lf"/>
   <xsl:with-param name="by" select="$lftab"/>
 </xsl:call-template>

If you don't want to define the variables above, I think the only thing
you really need is to put the "replace" and the "by" inside
<xsl:text>...</xsl:text>:


<xsl:call-template name="do-replace">
   <xsl:with-param name="text" select="$x"/>
   <xsl:with-param
name="replace"><xsl:text>&#10;</xsl:text></xsl:with-param>
   <xsl:with-param
name="by"><xsl:text>&#10;&#9;</xsl:text></xsl:with-param>
 </xsl:call-template>

&#10; is the character entity for a line feed; &#9; is the entity
representing a tab.

Hope this helps,
Chris

--- "MacEwan, James (Information Services)"
<James.MacEwan@xxxxxxxxxxxxxxxxxx> wrote:
> Hi xsl-list,
> 
> Background:
> I am producing a text document and need to replace a linefeed character
> with
> a linefeed tab combination.
> 
> My input XML "street" tag looks something like this:
> ...
> <street><![CDATA[Suite 123
> 456 Harrington Way]]></street>
> ...
> 
> I want my output to look like this
> ...
> Addr:	Suite123
> 	456 Harrington Way
> ...
> 
> I have roughly used the Replace string algorithm as found in Mike Kay's
> book
> (see also http://www.dpawson.co.uk/xsl/replace.html).  I do not wish to
> hardcode in the values of the substring to find and substring to put in
> its
> place, but to pass them in as parameters to a template.
> 
> Problem:
> I am making the call to my "do-replace" template as follows:
> <xsl:call-template name="do-replace">
>   <xsl:with-param name="text" select="$x"/>
>   <xsl:with-param name="replace">
</xsl:with-param>
>   <xsl:with-param name="by">
	</xsl:with-param>
> </xsl:call-template>
> 
> I suspect that the XML parser is converting my the whitespace in the
> "replace" and "by" parameters to a single space or an empty string. 
> What is
> the proper way to preserve the white space in parameters being passed
> into a
> template?
> 
> Thanks,
> 
> J.
> 
> 
> James MacEwan
> Software Developer
> Investors Group Inc.
> mailto:James.MacEwan@xxxxxxxxxxxxxxxxxx
> v: (204) 956-8515
> f: (204) 943-3540
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail - only $35 
a year!  http://personal.mail.yahoo.com/

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


Current Thread