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]