Alex,

Hello.

With respect to you problem with the colliding type names -- If you
have an XML schema that imports multiple (.xsd) files with xs:import
and the same name is used to define different complex types in
different namespaces.  I do not believe that generateDS can
correctly handle this case.  generateDS needs to define a Python
class for each complex type in a single python module.  It cannot do
that when there are two complex types with the same name.  And, it gets
confused when there are two complex types with the same name (but in
different namespaces).

With respect to identifying the root element in the supermod -- Have
you looked at the code at the beginning of the parse functions
(`parse`, `parseString`, etc.) in the generated supermod?  I suspect
that you have.  Anyway, that is where the supermod attempts to
determine the root element in the XML instance document that is
being parsed.  Would modifying that code help with your problem?  If
so, you could write your own version of the parse function in a
separate module from which you import the supermod.  Actually, you
can just generate a subclass module (with the "-s" and "--super"
command line options), strip out any code you do not need, and then
modify the parse function in that module.

Is that of any help?

Dave

On Sun, Sep 09, 2018 at 12:26:10AM +0300, Alex Bodnaru wrote:
> hello friends,
> 
> my other issue that floats on a multiple xsd scenario is a colliding type
> name.
> an arbitrary type name given to the root element of xsd2 is clashing with
> one of the complex types in xsd1.
> how could I identify the name of the root element in the supermod? I wish
> to skip the table generation for it.
> 
> 
> alex
> 
> On Sat, Sep 1, 2018, 16:03 Alex Bodnaru <alexb...@gmail.com> wrote:
> 
> > thank you dave, i will try to see how to harness this understanding to my
> > issue.
> >
> > best regards,
> > alex
> >
> >
> > On Sat, Sep 1, 2018 at 3:01 AM Dave Kuhlman <dkuhl...@davekuhlman.org>
> > wrote:
> >
> >> Alex,
> >>
> >> Thanks for the nudge on this.
> >>
> >> By "anonymous complex type", I assume you mean something like the
> >> following:
> >>
> >>     <xs:element name="myelement">
> >>         <xs:complexType>
> >>         ...
> >>         </xs:complexType>
> >>     </xs:element>
> >>
> >> Since generateds needs to generate a class for each complex type, it
> >> assigns names to the ones that lack them (basically the ones not at
> >> top level).  That is done in `process_includes.py`.  Look at the
> >> function `raise_anon_complextypes` in that file.  That function
> >> works on the element tree created by Lxml;  it raises the
> >> `complexType` element to top level (immediately under the root) and
> >> gives it a name.  The line:
> >>
> >>     type_name = '%sType' % (name, )
> >>
> >> creates the name (initially), and then the function `unique_name`
> >> attempts to ensure that it is unique.
> >>
> >> I suppose that could be parameterized, with yet another command line
> >> option.  Do you think that is worth the effort?  Why do you need to
> >> control it?
> >>
> >> Dave
> >>
> >> On Fri, Aug 31, 2018 at 10:14:59AM +0300, Alex Bodnaru wrote:
> >> > Thank you very much, variation in contribution may lead to
> >> collaboration.
> >> >
> >> > I did enjoy the tremendous value of original generateds, so please
> >> enjoy my
> >> > small addition too.
> >> >
> >> > but, btw, could you help with my question? I shamefully didn't find
> >> where
> >> > you set the name of the anonymous complex type following element 'xx' as
> >> > 'xxType'. I would like to tweak the suffix.
> >> >
> >> > thanks,
> >> > alex
> >> >
> >> > On Fri, Aug 31, 2018, 04:58 Bill Nichols <bnichol...@gmail.com> wrote:
> >> >
> >> > > This conversation promises good things 👍
> >> > >
> >> > > On Thu, Aug 30, 2018 at 7:59 PM Dave Kuhlman <
> >> dkuhl...@davekuhlman.org>
> >> > > wrote:
> >> > >
> >> > >> Alex,
> >> > >>
> >> > >> Very cool.
> >> > >>
> >> > >> Give me a little time to study this.  But, already, I can tell that
> >> > >> you know some things that I do not.  I have some learning to do.
> >> > >>
> >> > >> More later.
> >> > >>
> >> > >> Dave
> >> > >>
> >> > >> On Thu, Aug 30, 2018 at 09:03:56AM +0300, Alex Bodnaru wrote:
> >> > >> > ah, good you told me. mine is working, and was based on your django
> >> > >> code.
> >> > >> > i'm loading tables, foreign keys an manytomany relations, and their
> >> > >> data.
> >> > >> > all this is being generated from one xsd automatically. my code
> >> will be
> >> > >> > attached here.
> >> > >> > although xsd can represent primary keys, mine doesn't have it, and
> >> i'm
> >> > >> > allowing the
> >> > >> > user to set one per table, and one default pk field. if
> >> inexistent, the
> >> > >> pk
> >> > >> > field will be
> >> > >> > added as an auto incremented integer.
> >> > >> > btw i'm performing the load of multiple xsd with multiple models
> >> in one
> >> > >> > run, importing
> >> > >> > them in a main.py. this complexity somewhat broke the preservation
> >> of
> >> > >> older
> >> > >> > files.
> >> > >> > your generateDS.py has not changed at all.
> >> > >> >
> >> > >> > since my source data contains more than one xsd with overlapping
> >> > >> entities,
> >> > >> > and i've
> >> > >> > got stuck when one table is being defined in one xsd as a named
> >> complex
> >> > >> > type,
> >> > >> > but in the other, is being defined as a child type element of a
> >> field,
> >> > >> > hence it gets
> >> > >> > the name of the field + 'Type'. i'd like to override this
> >> particular
> >> > >> > behaviour, at least the
> >> > >> > field type dot to get the suffix, so it could match the table from
> >> the
> >> > >> > other xsd.
> >> > >> >
> >> > >> > thanks a lot for all your work,
> >> > >> > alex
> >> > >> >
> >> > >> > On Thu, Aug 30, 2018 at 7:01 AM Dave Kuhlman <
> >> dkuhl...@davekuhlman.org>
> >> > >> > wrote:
> >> > >> >
> >> > >> > > Alex,
> >> > >> > >
> >> > >> > > You are welcome.  Hope generateds has been useful.
> >> > >> > >
> >> > >> > > Your work on an extension for SQLAlchemy sounds very
> >> interesting.  I
> >> > >> > > suspect that such a capability would be a very valuable addition.
> >> > >> > >
> >> > >> > > I'm working on something similar myself.  I'm hoping to be able
> >> to
> >> > >> > > generate an SQLAlchemy model from an XML schema, then use
> >> > >> > > generateDS.py to generate a module contain export methods that
> >> would
> >> > >> > > load data from an XML instance document into a SQLAlchemy
> >> database.
> >> > >> > > I'm just now starting to study SQLAlchemy and am learning as I
> >> go.
> >> > >> > >
> >> > >> > > And, by the way, Denis Sutyagin aka jabber contributed the
> >> > >> > > code base for my work.
> >> > >> > >
> >> > >> > > I've also done some initial work on an analogous capability for
> >> > >> > > generateds and Django.
> >> > >> > >
> >> > >> > > I'm thinking that this is in the area of an ETL capability for
> >> > >> > > generateds and SQLAlchemy (and Django): extract, transform, and
> >> > >> > > load, without very much emphasis on the transform part.  Wait.
> >> > >> > > Maybe ... OK. I've added a hook for user transforms.  Although,
> >> I'm
> >> > >> > > groping about use-cases, which is likely obvious.
> >> > >> > >
> >> > >> > > I'm new to SQLAlchemy and am groping and learning about it as I
> >> work
> >> > >> > > on this.  So, it will likely be some time in the future before I
> >> > >> > > have something that works.
> >> > >> > >
> >> > >> > > Maybe someday we can compare notes and compare ideas on this.
> >> > >> > >
> >> > >> > > Dave
> >> > >> > >
> >> > >> > > On Wed, Aug 29, 2018 at 06:06:33PM +0300, Alex Bodnaru wrote:
> >> > >> > > > hello my friends,
> >> > >> > > >
> >> > >> > > > a big thank for generateds.
> >> > >> > > >
> >> > >> > > > in an aim to load a db from xsd and xml data files, i had the
> >> > >> pleasure to
> >> > >> > > > develop an sql alchemy extension.
> >> > >> > > > my only wish I didn't find a way to fulfill is to generate
> >> anonymous
> >> > >> > > types
> >> > >> > > > without the 'Type' suffix.
> >> > >> > > > however i tryed, my aim to do the change myself failed, since I
> >> > >> didn't
> >> > >> > > find
> >> > >> > > > where un the code it's being done.
> >> > >> > > >
> >> > >> > > > thanks in advance,
> >> > >> > > > alex
> >> > >> > > >
> >> > >> > > >
> >> > >> > > > alex
> >> > >> > >
> >> > >> > > >
> >> > >> > >
> >> > >>
> >> ------------------------------------------------------------------------------
> >> > >> > > > Check out the vibrant tech community on one of the world's most
> >> > >> > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> >> > >> > >
> >> > >> > > > _______________________________________________
> >> > >> > > > generateds-users mailing list
> >> > >> > > > generateds-users@lists.sourceforge.net
> >> > >> > > > https://lists.sourceforge.net/lists/listinfo/generateds-users
> >> > >> > >
> >> > >> > >
> >> > >> > > --
> >> > >> > >
> >> > >> > > Dave Kuhlman
> >> > >> > > http://www.davekuhlman.org
> >> > >> > >
> >> > >> >
> >> > >> >
> >> > >> > --
> >> > >> > --
> >> > >> > alex
> >> > >>
> >> > >> --
> >> > >>
> >> > >> Dave Kuhlman
> >> > >> http://www.davekuhlman.org
> >> > >>
> >> > >>
> >> > >>
> >> ------------------------------------------------------------------------------
> >> > >> Check out the vibrant tech community on one of the world's most
> >> > >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> >> > >> _______________________________________________
> >> > >> generateds-users mailing list
> >> > >> generateds-users@lists.sourceforge.net
> >> > >> https://lists.sourceforge.net/lists/listinfo/generateds-users
> >> > >>
> >> > >
> >>
> >> --
> >>
> >> Dave Kuhlman
> >> http://www.davekuhlman.org
> >>
> >
> >
> > --
> > --
> > alex
> >


> _______________________________________________
> generateds-users mailing list
> generateds-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/generateds-users


-- 

Dave Kuhlman
http://www.davekuhlman.org


_______________________________________________
generateds-users mailing list
generateds-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/generateds-users

Reply via email to