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

Subject: Re: [xsl] Multiple replace() in XSLT 2
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 16 May 2019 19:34:56 -0000
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@xxxxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxx <mailto:rick@xxxxxxxxxxxxxxx>
> 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 <>)

Current Thread