Brett Williams <brett_williams / agilent.com> wrote in message news:<1084203997.803240 / cswreg.cos.agilent.com>...
> The write() method for CData nodes ignores the transitive flag.  This 
> snippet of code illustrates the example:

This is fixed; it'll be in CVS before the end of the day, and will be
in REXML 3.0.7.

CData is supposed to ignore the transitive flag, but other things were
occurring that caused errors and other misformattings.  CData sections
will not be formatted, because they "raw" data, and whitespace in
CData sections is always significant.  Therefore, REXML will not add
whitespace to CData sections; also, since the "magical" markup of the
CData end, namely "]]>" is a block of characters, we can't apply the
normal trick of inserting a CR before the close '>'.  The only place
to insert whitespace would be before the "]]>" (which would be adding
whitespace to the CData section, which is illegal), or after the
"]]>", which would add a Text node to the tree, which would be illegal
for transitive documents.

Therefore, the XML document:

	<a><![CDATA[ Lalalala ]]></a>

will be transitively printed as:

	<a
	  ><!CDATA[ Lalalala ]]></a
	>

Which is about as good as we can get.  This is still better than what
REXML was doing before, which was crashing :-).

--- SER