This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: replace-string() convenience function proposal



Evan Lenz wrote:
>
> I would like a function such as replace-string() that would allow me to
> replace one specified string with another specified string, within a
> specified string.  For example, replace-string("Hello there", "Hello", "Hi")
> would return "Hi there".  I use the following stylesheet (adapted from an
> example in Kay's book) to do this for me now.
> [ ... screenful of code snipped ]
> The translate() function is great for one-to-one character replacements, but
> as soon as you want to replace a character with, say, two characters

... or even harder, replacing two or more characters with another string ...

> (as in
> my example), you have to write a named template that recursively calls
> itself, and pass all the parameters via <xsl:with-param/> each time you need
> to call it, which, as you can see, can get quite ugly.
>
> I don't care what this function is called; maybe just replace() would be
> better.
>
> Anyone want to second this motion (assuming it hasn't already been
> proposed)?


Seconded!

Tcl 8.2 and up has a [string map] function that does
multiple simultaneous string-to-string substitutions
in a single pass; Cost has a [substitution] command
that does much the same thing.  This function is *absolutely
indispensable* for converting XML/SGML to other markup
notations.  It's also a heck of a lot easier to implement
than a full regexp/regsub engine, and considerably easier
to use too.  Something like this would be a very useful
addition to XSLT.


--Joe English

  jenglish@flightlab.com


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]