Hello Dave, Thank you for the quick answer.
Regarding (2), here are the xsd files: https://www.dropbox.com/s/x5kljbv3gjsem1h/energistics.zip?dl=0 , and the file that didn't work is 'prodml/v2.0/xsd_schemas/DasAcquisition.xsd' in the archive.
One more issue I've found is that in documentation it is written that default parameter for export is --export="write literal" but in reality it is --export="write".
Regards, Eugene On 02.05.2017 01:45, Dave Kuhlman wrote:
Eugene, Hello. I'm glad generateDS.py has been helpful. Thanks for letting me know. Here are a few comments: 1. The file gends_user_methods.py is in the source distribution. You can find that here: https://dkuhl...@bitbucket.org/dkuhlman/generateds The documentation is wrong on that. I'll fix it. 2. With respect to on-file-per-xsd -- In the test directory (generateds/tests/ again in the source distribution) there is a test that uses that option. Perhaps you can look at that for clues. The files of interest are: generateds/tests/oneper00.xsd generateds/tests/oneper02.xsd generateds/tests/oneper01.xsd generateds/tests/oneper03.xsd The unit test when run, generates output modules in subdirectory tests/OnePer. The command used to run that test is in tests/test.py in method test_022_one_per. Here is that command: def test_022_one_per(self): cmdTempl = ( 'python generateDS.py --no-dates --no-versions ' '--silence --member-specs=list -f ' '--one-file-per-xsd --output-directory="tests/Ot_022_one_perePer" ' '--module-suffix="One" ' '--super=%s2_sup ' 'tests/%s00.xsd' ) t_ = 'oneper' cmd = cmdTempl % (t_, t_, ) o o o More specifically, about the maxLoops message, that error means that you have an element definition that extends another element definition, but generateDS.py thinks it should not generate the class for the extension because it has not yet generated the class for the base/parent. I've had to work on this once before. But, I don't know why that error is happening in your case. Do you have a schema that produces this error and that you could send me. If you do, I take a look. 3. With respect to the namespace definition behavior and the repeated namespace definitions -- I'll take a look to see how this can be done. 6. About parsing from a file-like object -- Actually, if I understand you correctly, this already works. You can pass a file object that is open for reading to the generated parse functions. The parameter name is misleading, I suppose. But, lxml.etree.parse does accept either a string file name or a file object. More tomorrow when I have a bit more time. Thanks for the detailed report. Dave On Mon, May 01, 2017 at 11:18:00AM +0300, Eugene Petkevich wrote:Hello, Thank you for the GenerateDS library. I find it very useful. I have a couple of things to ask: 1) The webpage with example python code, mentioned in the documentation -- http://www.davekuhlman.org/gends_user_methods.py -- does not exist. 2) When I try to use --one-file-per-xsd argument, I get the following error: *** maxLoops exceeded. Something is wrong with --one-file-per-xsd. 3) Namespace definition behavior -- by default, generateDS puts namespace definition in every export method of generated classes. That is, every element in an exported xml that has children would have namespace definition. But what if I only want namespace definition in top-level element? For example, I want this: <ns1:topLevel xmlns:ns1="http://somenamespace.org"> <ns1:secondLevel> <ns1:thirdLevel> </ns1:secondLevel> </ns1:topLevel> Instead of this: <ns1:topLevel xmlns:ns1="http://somenamespace.org"> <ns1:secondLevel xmlns:ns1="http://somenamespace.org"> <ns1:thirdLevel xmlns:ns1="http://somenamespace.org"> </ns1:secondLevel> </ns1:topLevel> I know I can modify export methods and put namespacedef_='' in each of them except for the top-level. But is there any other way to optimize that? Do you think it makes sense to add such feature via a command-line option? I looked into code and it changed to this by modifying just one like, but didn't test it thoroughly. 4) Several namespaces do not work. When there are several namespaces, only one is filled everywhere in generated classes. Therefore it builds the following xml <ns1:topLevel xmlns:ns1="http://somenamespace.org" xmlns:ns2="http://someothernamespace.org"> <ns1:secondLevel> <ns1:thirdLevel> </ns1:secondLevel> </ns1:topLevel> Instead of what it should be: <ns1:topLevel xmlns:ns1="http://somenamespace.org" xmlns:ns2="http://someothernamespace.org"> <ns2:secondLevel> <ns1:thirdLevel> </ns2:secondLevel> </ns1:topLevel> 5) XML schema extension elements. I'm not sure how it should be used, but it seems that extension does not work correctly. In types which are not leaves (that do are not extended/subclassed) I see the /extensiontype_ /field, though it is not initialized with a name of the subclass, and in leaves it is absent overall. Or should it be the desired behaviour? It seems logical to assign type name to the /extensiontype_/, then it produces correct xml, at least in my case. 6) A nice feature would be if we can parse xml from file-like object, not only filename (just like it is exported to the file-like object). Do you think the feature is worth adding? In case it makes sense to work on these things, I'll be glad to contribute. Best regards, Eugene
------------------------------------------------------------------------------ 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