Translating from schema to classes

Dean Roddey (roddey@us.ibm.com)
Fri, 31 Jul 1998 13:39:34 -0400


"I'm looking for a way of representing C/C++ data types in XML.
I've been searching around on the web and found references
to some existing XML that does this, but I haven't found the
document itself. Can someone give me a hand with this?"

This is related to something I was thinking about the other day. If I'm=
going
to write some code to manipulate very 'record oriented' XML data, I'd o=
ften end
up having a class that represents the records, into which I load the da=
ta after
parsing it in. One thing that would greatly ease the job of doing this =
would be
a program that would take an XML schema, a translation file, and spit o=
ut a
class that represents the schema (with getters/setters/serialization/et=
c...
appropriate for the language and library.) It could also automatically =
spit out
a method that would (given a DOM fragment of that record type), suck ou=
t the
data for that XML record into itself (and vice versa to update the DOM =
fragment
to represent itself again.

The translation obviously could also be an XML file in which a set of t=
ags are
defined that allow the translation to be customized, for instance a typ=
e
mapping tag that says any type foo:int should map to tCIDLib::TInt4 or
something like that.

So, when the XML changes, I can just rerun the translator and spit out =
the new
class. Any added value I would just provide in a derived class, so that=
the
underlying data management class can be spit out as required, without l=
osing
any of my code. You could do a translation file for Java, for C++ STL, =
I could
do one for my CIDLib libraries, etc...

Is anyone doing something like this? Or is this just another dumb idea
(something I'm good at :-) It almost enough trouble to do a translation=
file
that it wouldn't be worth it unless you had a lot of different XML data=
records
and/or a lot of different languages to spit out representations for. Bu=
t the
ability to spit out a method automatically to pull out the data into/ou=
tof the
record would be nice in many cases.

Just a thought anyway...

----------------------------------------
Dean Roddey
Software Weenie
IBM Center for Java Technology - Silicon Valley
roddey@us.ibm.com
=