RE: [xsl] Retaining XML output

Subject: RE: [xsl] Retaining XML output
From: <Jarno.Elovirta@xxxxxxxxx>
Date: Wed, 7 Apr 2004 14:57:29 +0300
FAQ,

> My XML looks like
> <x>
>      <y y1="somexml"><![CDATA[<queries><abc>123</abc></queries>]]></y>
> </x>
> 
> and my xsl snippet is
>     <xsl:value-of select="y[@y1='somexml']"/>
> 
> Now, when I run it through a transformation, I get an output 
> without the
> markup:
> &lt;queries&gt;&lt;abc&gt;123&lt;/abc&gt;&lt;/queries&gt;

You didn't have markup in the first place, so you don't get markup in the output either. 
 
> I would like to retain the markup in the output
> (<queries><abc>123</abc></queries>).
> Is there any way to achieve this using a xalan/xerces parser.

No, because "<queries>..." is not markup inside CDATA section, it's just text. If you want to output the text node in a CDATA section, use cdata-section-elements attribute in xsl:output with the value of the name of the element inside which the text appears, e.g. if the output element is "foo", the use

  <xsl:output cdata-section-elements="foo"/>

But again, note that 

  <foo><![CDATA[<queries><abc>123</abc></queries>]]></foo>

and 

  <foo>&lt;queries&gt;&lt;abc&gt;123&lt;/abc&gt;&lt;/queries&gt;</foo>

are equal.

Cheers,

Jarno

Current Thread