Re: C and other non "standard" DOM language bindings

On Fri, Aug 25, 2000 at 02:13:18PM -0400, Michael Champion wrote:
> At 07:53 PM 8/25/00 +0200, Daniel Veillard wrote:
> >On Fri, Aug 25, 2000 at 10:45:36AM -0400, Michael Champion wrote:
> > > Getting to my main  point ... I'm wondering about C language bindings for
> > > the DOM.  I know that Oracle has published one ... and the XML C 
> > Library for
> > > Gnome is DOM-like, but not really an attempt to be a complete,
> > > vendor-neutral C DOM binding as far as I can tell.
> >
> >  Maybe i should report a bit on this. At least for archival/historical
> >purposes.
> 
> Thanks!  That helps me understand the libxml effort.  A couple of 
> questions.  You cited
> http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&dir=gdome
> as "A new DOM module", but all I see is a CVS archive.

  Well right, this is mostly code ... the latest version is now
in the gdome2 module actually.

> Is there some 
> document that could be pulled out at posted for non-Gnome people to help us 
> understand what is in there?

  Hum, the "official page" is at 
     http://www.levien.com/gnome/gdome.html

  but it's nearly content less.
I'm afraid people did concentrate on getting the code done and not much
on writing documentation. That's one of the good points of real standards
which is that one can point to the reference source and annexes ! You can
look at the README but it ain't much.

> Also, what's your feelings about the possibility for the libxml DOM  to 
> become the de-facto standard C binding for the DOM? Or is this a hopeless
> idea?

Well I went back to the code and it seems I mispoke. They are again
running the interface generator from the IDL compiler and using the
CORBA binding conventions :-). The header files and the names are
autogenerated, however the prefix is not DOM but Gdome, so I doubt
it would be a good idea:

-------------- excerpt from gdome/test/test-gdome.c -----------
void
print_gdoc_structure (GdomeNode *node)
{

  GdomeNode *child, *next;
  GdomeDOMString *tagName;
  GdomeException exc = 0;

  type = gdome_n_nodeType (node, &exc);
  if (type == GDOME_TEXT_NODE)
    {
      GdomeDOMString *text;

      text = gdome_cd_data ((GdomeCharacterData *)node, &exc);
[...]
  listener = gdome_xml_evntl_new (GDOME_EVNTL_CALLBACK (insert_cb), NULL);
  gdome_evntt_addEventListener (GDOME_EVNTT (el),
                                gdome_test_str_mk ("nodeInsertedIntoSubtree"),
				listener, 0, &exc);
  empty = gdome_doc_createElement (gdoc, gdome_test_str_mk ("empty"), &exc);
----------------------------------------------------------------

 etc ...
there is also some extensions like gdome_xml_from_document( doc )
to read/save through libxml interfaces and "sliding DOM' a modified
version of the API functions to avoid the accumulation of proxy objects
on the client side.
 
Daniel

-- 
Daniel.Veillard@w3.org | W3C, INRIA Rhone-Alpes  | Today's Bookmarks :
Tel : +33 476 615 257  | 655, avenue de l'Europe | Linux XML libxml WWW
Fax : +33 476 615 207  | 38330 Montbonnot FRANCE | Gnome rpm2html rpmfind
 http://www.w3.org/People/all#veillard%40w3.org  | RPM badminton Kaffe

Received on Friday, 25 August 2000 18:46:36 UTC