Your solution would work if you were using an XSLT processor that
supported disable-output-escaping. It seems you aren't. The fact that
d-o-e is non-portable is one of the reasons we often give for avoiding
it.
Another approach might be to use saxon:serialize(), or an equivalent
home-grown extension function of your own.
Best solution would be to find the person who designed this XML
structure and get them to mend their ways. Or you could devise a
sanitary XML representation of the data, generate that, and then
postprocess it using non-XSLT techniques (e.g. change <cdata>...</cdata>
to
<![CDATA[...]]> using a text editor).
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
Jason Cunningham
Sent: 04 August 2003 15:19
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Need to wrap XML in <![CDATA[...]]> tags
Hi,
I've got a strange requirement to transform
<sample>
<name>
<firstName>Mickey</firstName>
<lastName>Mouse</lastName>
</name>
</sample>
into
<sample>
<person>
<![CDATA[
<name>
<firstName>Mickey</firstName>
<lastName>Mouse</lastName>
</name>
]]>
</person>
</sample>
I've written this XSL
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match='*[name() = "sample"]'>
<sample>
<person>
<xsl:text disable-output-escaping="yes">
<![CDATA[
</xsl:text>
<xsl:copy-of select="./node()"/>
<xsl:text disable-output-escaping="yes">
]]>
</xsl:text>
</person>
</sample>
</xsl:template>
</xsl:stylesheet>
that gets me to
<sample>
<person>
<![CDATA[
<name>
<firstName>Mickey</firstName>
<lastName>Mouse</lastName>
</name>
]]>
</person>
</sample>
Unfortunately, this isn't good enough, for the system I am
interfacing with.
I can not figure out how I can insert an unescapted '<'
into the output -
I've read that '<' isn't allowed inside the xsl:text tag.
Has anyone any ideas?
Thanks for your time,
Jason
_________________________________________________________________
Find a cheaper internet access deal - choose one to suit you.
http://www.msn.co.uk/internetaccess
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list