[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: output CDATA in xml using xsl

Subject: RE: output CDATA in xml using xsl
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Sun, 21 Dec 2003 22:40:37 -0000
cdata in xml
> Hello
> I am trying to make a xsl document that converts one xml 
> document into 
> another, but  have run into some trouble.
> I have this document:
> <ads>
> <ad>
>    <hello>world</hello>
>    <paragraph>Some <bold>html</bold> formatted text</paragraph>
>    <paragraph>Another line of <bold>html</bold></paragraph> 
> </ad> </ads>
> 
> And I want this out:
> <ads>
> <ad>
>    <hello>world</hello>
>    <htmlcontent>
>    <![CDATA[
>        <p>Som Some <b>html</b> formatted text<p>
>        <p>Another line of <b>html</b></p>
>    ]]>
>    </htmlcontent>
> </ad>
> </ads>
> 
> I have tried setting <xsl:output 
> cdata-section-elements="htmlcontent"> 
> but that did not help me?

This transformation is difficult, because it breaks the "tree-to-tree"
processing model of XSLT. The things in the CDATA that look like tags
(for example <p>) are not actually tags; in fact the very purpose of the
CDATA section is to say "even though it looks like a tag, it isn't one
really".

In Saxon you can use the saxon:serialize() extension function which
turns a tree into a string containing serialized XML, and you can then
output this string in a CDATA section. With other processors you might
be able to write an extension function that achieves a similar effect.

However, since XSLT is about transforming trees and you are working
outside this model, it may be easier (and architecturally cleaner) to
use a text-processing tool (e.g. sed or Perl) to post-process the
output. This might be as simple as replacing "<htmlcontent>" by
"<htmlcontent><![CDATA[" and "</htmlcontent>" by ">>]</htmlcontent>".

Generally I agree with the view that putting markup inside CDATA
sections is not good XML design, but it's often done and some people
come up with plausible reasons why they've done it.

Michael Kay


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.