CDATA sections within an XML document can contain markup elements common to XML, without affecting whether the document is well-formed. For example, if you want to include a mathematical XML application using the < and > characters to refer to less-than and greater-than, you can use a CDATA section.
To specify that a given element in the result tree will contain a CDATA section, include the element name as a value of the cdata-section-elements attribute of the <xsl:output> element. The CDATA section created in this way will preserve white space and character entities.
The XSLT processor scans the result tree, making a CDATA section of each item in the cdata-section-elements attribute.
To create the CDATA section, the elements listed as values of the cdata-section-elements attribute must be elements in the result tree, not the source tree. In the preceding examples, the Microsoft JScript® code appears as a text node within the source tree's <scriptcode> element, but the cdata-section-elements attribute refers to and affects <script> elements in the result tree.
HTML does not recognize CDATA sections. Do not use this option when generating HTML.
XML File (cdata.xml)
<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="cdata.xsl" ?>
<document>
<scriptcode language="JScript">
function message(msg){
alert(msg);
}
</scriptcode>
</document>
XSLT File (cdata.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output cdata-section-elements="script"/>
<xsl:template match="scriptcode">
<document>
<script language="JScript">
<xsl:value-of select="."/>
</script>
</document>
</xsl:template>
</xsl:stylesheet>
Formatted Output
None (blank).
Processor Output
<?xml version="1.0" encoding="UTF-16"?><document><script language="JScript"><![CDATA[
function message(msg){
alert(msg);
}
]]></script></document>