In the Tuscany Java implementation we expose CDATA as sequence entries (like mixed text) with a special "CDATA" property (we handle comments in a similar way). SDO doesn't define a special property for CDATA, so this is an implementation-specific feature. I'm not sure, long term, what should be the best (proper) way to do this.
Frank. "Simon Laws" <[EMAIL PROTECTED]> wrote on 11/03/2006 09:41:25 AM: > On 10/26/06, Simon Laws <[EMAIL PROTECTED]> wrote: > > > > This is primarily a C++ question but I guess could apply to Java also. I'm > > trying to read a document into C++ SDO that contains a CDATA section. The > > corresponding CDATA doesn't make its way into the resulting SDO. I put the > > C++ SDO implementation in the debugger and found the reason why: > > > > sax2parser.cpp > > > > void sdo_cdataBlock(void *ctx, const xmlChar *value, int len) > > { > > } > > > > So the callback exists, gets called with the correct data during the > > parse, i.e. LibXML2 is doing the right thing, but the callback is ignored. > > Is there a good reason for this? I did a quick search of the C++ and Java > > specs and they don't appear to discuss CDATA specifically. Can someone > > comment on whether the Java implementation handles CDATA successfully? > > > > Logically, from an SDO point of view, there is probably no need to treat > > CDATA specially as the SDO model dictates precisely the difference between > > data and structure. We may find that to make the XML DAS function work we > > have to know that a property potentially contains markup but I'd have to > > look closely at how the C++ SDO implementation of the XML DAS function > > streams out SDOs to XML when requested to do so. > > > > If CDATA hasn't been omitted for a good reason I'll come up with a > > proposal for C++ SDO. > > > > Regards > > > > Simon > > > > I didn't get any response to this. Here are my further thoughts.. > > There are a number of options for representing CDATA in SDO, for example > > 1) Duplicate the CDATA string as is, including the "<![CDATA[" and "]]>" > markers, to the appropriate property in the data object hiearchy > 2) Duplicate the CDATA string excluding the "<![CDATA[" and "]]>" markers > and instigate a special flag to indicate that CDATA is present. > > CDATA is the specific concern of XML, i.e. the chracter entities that CDATA > protects an XML parser from are of no > concern to SDO because SDO is not intended to be tied directly to XML. So > given the example options above we > either expose the specifics of XML to the SDO core 2) or to the SDO user 1). > > Neither are particularly attractive. > > 1) appears to be the simplest approach to implement because it provides a > mechanism for the user to read, and > create CDATA without having to provide much special support in SDO. 2) is > more involved particularly because > CDATA can appear mixed in with other text strings and so a sequence may need > to be used to represent properties > that have a mixture of text and CDATA marking those sequences entries that > are CDATA. > > 1) does require changes (at least in C++ SDO) because XML parsers tend to be > too helpful in this case for > processing CDATA. XML parsers, libxml2 in particular, recognize the > "<![CDATA[" and "]]>" sequence as a special > indicator and throw it away returning just the text it includes. We would > have to reintroduce it and store it in > the parameter value in question. The C++ SDO implementation uses a lot of > XML string handling before the parameter > value is actually stored which URL encodes parts of the CDATA markers so > this would have to be fixed. When writing out the CDATA strings any string > typed properties would have to be scanned for the markers so that the > appropriate libxml2 functions can be called to get the CDATA sections in the > right place. > > I have a test implementation of 1). If this is the way we want to go I would > have to do more work to thread CDATA handling through the xml strings that > are used to set parameters. Happy to do this but would like to discuss > first. > > Thoughts (particularly on what Java SDO does with CDATA)? > > Simon --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]