Re: [xsl] converting CDATA ampersand to &

Subject: Re: [xsl] converting CDATA ampersand to &
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Thu, 13 Mar 2003 12:34:32 +0000
Hi Vilius,

> <xsl:value-of select="text()"/>
>
> I need to present some text extracted from a database using xsl.
> Some db text strings include '&' and give not well-formed error
> message. Any ideas how to convert CDATA ampersand to &amp; ? If I
> try translate(text(), &, &amp;) I run into the same problem.

I assume you've got something like:

  <foo><![CDATA[Tom & Jerry]]></foo>

As far as the XSLT processor is concerned, this is exactly the same as
if it were represented as:

  <foo>Tom &amp; Jerry</foo>

Assuming that you are using the xml or html output method, when the
XSLT processor outputs the text node generated by the <xsl:value-of>
instruction you use above, it will output the ampersand as &amp;.

If you have something like:

  <foo>Tom & Jerry</foo>

then your source document is not well-formed and therefore you can't
use XSLT to process it. You need to change the routine that you use to
extract information from your database so that the & is escaped
properly, and thus guarantee that the source XML is well-formed.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread