> Hi Dave,
> 
> I have attached, 2 xsd files, a valid xml file, the generated xml file, the
> python file generated by generateDs, and a test python file I created.
> 
> I ran the following comand to create enumList.py:
> 
> generateDS.py -o enumList.py enum-list.xsd
> 
> Then I try to create an XML file using enumListTest.py:
> 
> from enumList import EnumList
> import sys
> 
> enums = EnumList()
> enums.add_simple_type_named_enumeration("ONE")
> 
> enums.export(sys.stdout, 0, name_='enum-list')
> 
> I save the output to generated.xml.
> 
> Then I run:
> 
>  xmllint --noout --valid --schema enum-list.xsd generated.xml
> 
> and get the following report:
> 
> generated.xml:1: validity error : Validation failed: no DTD found !
> ns:simple-type-named-enumeration="urn:com:george:simple-type-named-enumeration"
> 
>    ^
> generated.xml:2: element simple-type-named-enumeration: Schemas validity
> error : Element '{urn:com:george:enum-list}simple-type-named-enumeration':
> This element is not expected. Expected is (
> {urn:com:george:simple-type-named-enumeration}simple-type-named-enumeration
> ).
> generated.xml fails to validate
> 
> The issue is that the generated xml file has the following:
> 
> <enum-list:simple-type-named-enumeration>ONE</enum-list:simple-type-named-enumeration>
> 
> but it should really be
> 
> <simple-type-named-enumeration:simple-type-named-enumeration>ONE</simple-type-named-enumeration:simple-type-named-enumeration>

George,

I've been spending some time on this and I'm beginning to think that
I can't solve it.  But, here are a few thoughts that might help you
deal with it:

There are two namespace definitions (and their prefixes).  But, the
generated (exported) XML has only one.  generateDS.py has made a
guess about this and generated a default definition, but it's not
quite right.  You can fix this by adding a command line option when
you run generateDS.py that might look something like this:

    --namespacedef='xmlns:enum-list="urn:com:george:enum-list" 
xmlns:simple-type-named-en  
umeration="urn:com:george:simple-type-named-enumeration" '

But the more serious problem is that we are dealing with two
different namespaces and one of them is in the imported file.
generateDS.py calls a function in process_includes.py to process
those xs:import and xs:include elements in the schema and to combine
all the included/imported schemas into a single one.  But, it does
not keep track of the namespace when it processes the xs:include and
xs:import elements.  For xs:import (but not xs:include, I believe),
it should track the namespace that is passed in by the xs:import.
generateDS.py and process_includes.py do not do that, and I don't
even think I know how to approach that problem.  It might even be
that combining those schemas into a single structure is the wrong
approach and make a solution impossible.

So, I think we're stuck.

I'll do some more looking.  Perhaps I can find a work-around.  Or,
maybe there is a fix that is easier than I think.

I'll let you know if I learn something.

By the way, there is also PyXB.  I believe that it does something
roughly equivalent to what generateDS.py does, but its approach is
quite different.  The documentation suggests that it is more
sophisticated in its handling of namespaces than generateDS.py.  I
have not taken the time to figure it out.  But, perhaps it would be
helpful to you.  One thing I did find is that it generates code with
syntax errors when you throw a schema at it that has dashes in the
file name, for example, simple-type-named-enumeration.xsd.

Dave


> 
> I ran the code in the debugger. XschemaElement.annotate_find_type() seems
> to be the culprit. It decides that simple-type-named-enumeration is of type
> xs:string, instead of a SimpleTypeNamedEnumeration.
> 
> Any ideas how to fix this? I'll continue to look at it in case I see
> something obvious.
> 
> Thanks,
> 
> George
-- 

Dave Kuhlman
http://www.davekuhlman.org

------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
generateds-users mailing list
generateds-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/generateds-users

Reply via email to