xsl-list
[Top] [All Lists]

Re: [xsl] Multiple replace() in XSLT 2

2019-05-16 14:35:01
I think recursion is the easiest solution in XSLT 2.0.

In 3.0 you can use xsl:iterate, or a fold() operation:

fold-left($input, $lookup/*/findChange, function($a, $c) { replace($a, 
$c/@find, $c/@change, 'q' })

Michael Kay
Saxonica

 
On 16 May 2019, at 19:59, Rick Quatro rick(_at_)rickquatro(_dot_)com 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

Hi,
 
I have a look up file of find/change pairs that I have to apply to a text 
node in my XML document. I am using XSLT 2. Here is an example of the lookup 
file:
 
<?xml version="1.0" encoding="UTF-8"?>
<findchange_lookup>
    <findchange find="Eicas" change="EICAS"/>
    <findchange find="Ulb" change="ULB"/>
</findchange_lookup>

I am reading this in as a global variable, but I am not sure the best 
approach for doing multiple replacements on the node. I can use recursion 
like in XSLT 1, but I can't think of how to do this in XSLT 2. There could be 
any number of <findchange> elements in my lookup file. Any pointers would be 
appreciated. Thank you very much.
 
Rick
 
Rick Quatro
Carmen Publishing Inc.
rick(_at_)frameexpert(_dot_)com <mailto:rick(_at_)frameexpert(_dot_)com>
585-729-6746
www.frameexpert.com/store/ <http://www.frameexpert.com/store/>
 
 
 
 
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by 
email <>)
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>