[xsd-users] How to build an object process graph with custom types

Bo Ba bo-ba at mail.ru
Thu May 12 10:08:26 EDT 2011


 Hi!

On 5/11/11 3:24 PM, "Florian Paul Schmidt"
<fschmidt at techfak.uni-bielefeld.de> wrote:

> On 05/11/2011 11:26 PM, Boris Kolpackov wrote:
>> Hi,
>> 
>> Bo Ba<bo-ba at mail.ru>  writes:
>> 
>>> This seems to be doable, however, a specific question I have whether
>>> it would be feasible to skip building the DOM structure and directly
>>> build my custom object graph using xsd.
>> Yes, the C++/Parser mapping is designed for exactly this: parsing XML
>> and building a custom in-memory representation:
>> 
>> http://www.codesynthesis.com/products/xsd/c++/parser/
>> 
>> Boris
>> 
> 
> Hi folks,
> 
> maybe i totally missed something, but oftentimes you have another step
> involved: Building the requested datastructure from the custom in-memory
> representation of the XML document. For my robotics control "framework"
> I chose a way of using a global "type registry" which enables me to
> construct and parametrize the objects needed..
> 
> The software is available at github:
> 
> http://github.com/fps/CBF
> 
> Especially of interest to you might be the xml_object_factory.h:
> 
> https://github.com/fps/CBF/blob/master/libcbf/cbf/xml_object_factory.h
> 
> Note that for this to work, every type you want to construct from a
> corresponding XML schema type needs a constructor that takes the
> corresponding schema type as argument:
> 
> https://github.com/fps/CBF/blob/master/libcbf/cbf/linear_transform.h
> 
> Also each type has to create a static global instance of the derived
> factory type in its .cc file, so at library (or application) load time
> this instance is created and registers itself with the base factory
> singleton:
> 
> https://github.com/fps/CBF/blob/master/libcbf/linear_transform.cc
> 
> This then allows constructed objects to construct its members in turn
> again using this mechanism. See e.g. lines 259ff here:
> 
> https://github.com/fps/CBF/blob/master/libcbf/primitive_controller.cc
> 
> The corresponding schema can be found here:
> 
> https://github.com/fps/CBF/blob/master/schemas/schemas.xsd
> 
> Maybe this helps, or maybe it's totally misleading cause i'm a dumba**
> :D I guess the idea is generic enough to be factored out into a library
> on its own..
> 
> Have fun and play safe,
> Flo
> 
> 
 I am not sure I follow you on the difference between "requested
datastructure" and "custom in-memory representation of the XML document",
however, it seems to me that you have a nice design using factories for each
type. Could you explain the difference above? Do you have a runnable
example, like xsd's?

 Thanks.

 Bo




More information about the xsd-users mailing list