|
Subject: Re: [xsl] Need an XPath expression which returns all xs:pattern elements containing a regex that permits an unbounded number of characters From: "Liam R. E. Quin liam@xxxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 4 Apr 2024 23:54:12 -0000 |
On Thu, 2024-04-04 at 15:47 +0000, Roger L Costello costello@xxxxxxxxx
wrote:
> David Carlisle devised a brilliant approach:
One way to make this approach easier to maintain is to use a variable,
e.g. in XSLT
<xsl:variable name="normalisations" as="element(change)*">
<change><from>\\.</from><to>.</to></change>
<change><from>\s+</from><to></to>
</xsl:variable>
and write a recursive function or template to do the replacements.
For those without the XPath 2 constraint, in XPath 3 you can do this:
let $replacements := (
[ "a", "b" ],
[ "c", "oy" ],
[ "bb", "b"]
) return fold-left($replacements, "abc", function($so-far, $this) {
replace($so-far, $this(1), $this(2))
})
using an array and fold-left. Sometimes i put the fold-left into a
separate function, replace-all-from-array() or something, and also
support a third item in each array, flags.
liam
--
Liam Quin,B https://www.delightfulcomputing.com/
Available for XML/Document/Information Architecture/XSLT/
XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.
Barefoot Web-slave, antique illustrations: B http://www.fromoldbooks.org
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Need an XPath expression , David Carlisle d.p.c | Thread | [xsl] [Solution] Need an XPath expr, Roger L Costello cos |
| Re: [xsl] Need an XPath expression , Liam R. E. Quin liam | Date | Re: [xsl] Need an XPath expression , C. M. Sperberg-McQue |
| Month |