Subject: Re: 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 & ? If I
> try translate(text(), &, &) 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 & 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 &.
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
|