Re: [xsl] Unescaping CDATA and turning it into a variable?

Subject: Re: [xsl] Unescaping CDATA and turning it into a variable?
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 12 Jun 2019 15:02:43 -0000
On 12.06.2019 16:51, rus tle profrustyleafiii@xxxxxxxxxxx wrote:
Hello List,

Given a node such as this...

<Fragment>
<![CDATA[This is some<spanclass="meta"cid="0b>cheese</span> and
<spanclass="meta"cid="1b>chocolate</span>!]]>
</Fragment>

If I use disable-output-escaping:

<xsl:value-ofdisable-output-escaping="yes"select=bFragment/text()"/>

It renders withB the "markup":

I love <spanclass="meta"cid="0b>cheese</span>B and
<spanclass="meta"cid="1b>chocolate</span>!</td>

Which is great. Happy.

But I need to target the spans and the span content and use it elsewhere
in the stylesheet. Is it possible to extract the text with bmarkupb as
a
variable or a parameter so I can re-use it before rendering?

Ideally I would have something likeb&

<xsl:variablename="markup">
<xsl:value-ofselect="$FRAGMENT"disable-output-escaping="yes"/>
</xsl:variable>

In XSLT 3 you can use <xsl:variable name="markup" select="parse-xml-fragment(Fragment)"/> to have the variable bound to the result of parsing the string value of the Fragment element as an XML fragment.

Then you can use XPath or apply-templates, as with any nodes.

Current Thread