This is correct operation per the spec.
The XSLT/XPath data model does not have such a thing as a CDataSection node. All text is reported simply as text; the boundaries of <![CDATA[]]> markup are not preserved on input. If you have specific elements that you want to output using <![CDATA[]]> rather than character by character escaping, there's a way to request that Xalan do so. But that's the closest you can come. I'd suggest that, rather than trying to assign a semantic meaning to <![CDATA[]]>, you use a child element (which may in turn contain <![CDATA []]>) and assign the meaning to that child element.
