Re: [xsl] escape quotation marks in replace function

Subject: Re: [xsl] escape quotation marks in replace function
From: "Liam R. E. Quin liam@xxxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 3 Oct 2024 20:34:55 -0000
On Thu, 2024-10-03 at 18:51 +0000, Wolfhart Totschnig
wolfhart.totschnig@xxxxxxxxxxx wrote:
> B Dear list,
>
> B <xsl:value-of select="replace(.,&#34;([
> C"BB])'&#34;,&#34;$1C"BB&#34;)"/>
> B 
> B I would like to add to this code such that it also replace the
> straight single quotation mark when it is preceded by a straight
> double quotation mark. What do I have to add between the brackets to
> achieve this? Putting either ["] or [&#34;] produces an error since
> both of these are used in the surrounding code.

Since this is in XSLT, a simple way is to use a variable -
  <xsl:variable name="regex" as="xs:string">"([bb']'")</xsl:variable>

Then use select="replace($input., $regex, $replacement)" /> or whatever
- in this case youbre constructing a text node, so value-of.

Watch that if you have expand-text="yes" in scope, { and } are special
in the body of xsl:variable, so use,
<xsl:variable expand-text="no"...
to turn off that wonderful but here in-the=way feature.

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