RE: [xsl] output a literal CDATA section

Subject: RE: [xsl] output a literal CDATA section
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 20 Jul 2005 18:26:11 +0100
CDATA sections aren't reflected in the XSLT/XPath data model and there's
therefore no way of detecting them in the source tree or generating them in
the result tree. The only time to generate one is at the serialization
stage.

In XSLT 2.0 you can achieve this using character maps: define two
private-use characters, create a character-map that maps these to
"<![CDATA[" and "]]>" respectively; and put these special characters in the
result tree at the point where you want the CDATA section to appear.

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: Georges Schmitz [mailto:georges.schmitz@xxxxxxxxx] 
> Sent: 20 July 2005 17:23
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] output a literal CDATA section 
> 
> Hi,
> 
> I need to output a literal <![CDATA[]]> section via xslt, 
> because I need 
> to edit the output later on. My code (could) look as follows
> 
>         <xsl:for-each 
> select="exsl:node-set($non-common-params)/complexParam" 
> xml:space="preserve">
>           <programlisting width="80"><varname><xsl:value-of 
> select="name(./*)"/></varname>
>           <![CDATA[
>             <xsl:copy-of select="./*"/>
>           ]]></programlisting>
>         </xsl:for-each>
> 
> Will say, I need the output the following way
> 
>           <programlisting width="80"><varname>areaEntry</varname>
>           <![CDATA[<areaEntry>
>           <id>502147</id>
>           <name>Aircraft</name>
>         </areaEntry>
>           ]]></programlisting>
> 
> How can I accomplish that? Using the attribute 
> "cdata-section-elements" 
> is not possible, because I don't know the names of the tags 
> in advance.
> 
> Thanks for the help,
> Georges

Current Thread