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

RE: char replacement

Subject: RE: char replacement
From: "Michael Leditschke" <mike@xxxxxxxxxxx>
Date: Thu, 9 May 2002 15:49:20 +1000
xsl replace crlf
Not sure I quite understand what you mean by "(Unicode 'xD')".

The XML 1.0 spec section 2.11 says that all the CR or CRLF in your
source file will be converted to LF. This applies equally to
source input and stylesheet XML documents.

The only way to actually get the CR preserved in the input or
stylesheet document is to include the CR as a character reference
in the source XML i.e. &#xD; (see XML 1.0 spec section 4.1). So given
your example, I'm surprised you found any CR at all.

On a more general note, a recursive template it the usual way to handle
the sort of replacement you seek. The template processes the first
of the pattern, then, if there are more occurrences, calls itself to
process the remainder. Finally the template returns the combination of
the portion of the string it has processed and the results of the
recursive call.


> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Philippe
> Figon
> Sent: Thursday, 9 May 2002 2:19 PM
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  char replacement
> Hellolinefeed
> I am trying to write a stylesheet that could replace all the
> carriage return
> (CR) characters (Unicode 'xD') in the text() node of an element with
> something else.
> Let's put it simple ! I have an element named 'screen' with some
> text within
> and I'd wish to put something like ~\\ at the end of each line (LaTeXing
> isn't it ?):
> <screen>
> agdh djdjdkk
> whjjd kdopd
> shdm gfjkmd
> hdjdj kkdddl
> </screen>
> should become :
> agdh djdjdkk~\\
> whjjd kdopd~\\
> shdm gfjkmd~\\
> hdjdj kkdddl~\\
> I wrote a stylesheet like this :
> (the output method is 'text')
> <xsl:template match="screen">
>     <xsl:variable name="texto"><xsl:value-of
> select="substring-before(.,xD)"/></xsl:variable>
>   <xsl:value-of select="concat($texto,'~\\')"/>
> </xsl:template>
> That works for the first 'xD' appearing but I can't find how to
> make it work
> recursively for the whole content of the 'screen' text. (XSLT is
> not the best
> thing to make strings replacements, I guess ;-) )
> Could anyone help ?
> Cheers
> Phil
>  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


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.
First Name
Last Name
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.