Re: [pyxb-users] Issues generating an XML with multiple complexType instances using BIND and/or app
Brought to you by:
pabigot
From: Ajinkya F. <aji...@gm...> - 2015-04-03 18:51:31
|
Thank you Peter for the prompt reply. Made changes to the schema, but now i get the following error on using pyxb.BIND() *Schema:* <xs:schema elementFormDefault="qualified" xmlns:xs=" http://www.w3.org/2001/XMLSchema"> <xs:element name="Organization" type="OrganizationType"/> <xs:complexType name="OrganizationType"> <xs:sequence> <xs:element name="Name" type="xs:string"/> <xs:element name="Employee" type="EmployeeType" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="EmployeeType"> <xs:sequence> <xs:element name="Name" type="xs:string"/> <xs:element name="Address" type="AddressType" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="AddressType"> <xs:sequence> <xs:element name="Street" type="xs:string"/> <xs:element name="Town" type="xs:string"/> <xs:element name="County" type="xs:string"/> <xs:element name="PostCode" type="xs:integer”/> <xs:element name="Country" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> *Creating XML:* import organization import pyxb pyxb.RequireValidWhenGenerating(False) org = organization.Organization() org.Name = 'company1' org.Employee = pyxb.BIND() print org.toxml() *Error:* Traceback (most recent call last): File "testorganization.py", line 12, in <module> org.Employee = pyxb.BIND() File "/Library/Python/2.7/site-packages/pyxb/binding/basis.py", line 98, in __setattr__ return super(_TypeBinding_mixin, self).__setattr__(name, value) File "/Library/Python/2.7/site-packages/pyxb/binding/content.py", line 1043, in set value = self.__elementBinding.compatibleValue(value, is_plural=self.isPlural()) File "/Library/Python/2.7/site-packages/pyxb/binding/basis.py", line 1618, in compatibleValue raise pyxb.SimplePluralValueError(self.typeDefinition(), value) pyxb.exceptions_.SimplePluralValueError: Type EmployeeType cannot be created from: <pyxb.BIND object at 0x10fd8ec50> Following pyxb's documentation, BIND was woking before i made the change, for dealing with complexTypes, or am i missing something fundamental here. Thank you. On Fri, Apr 3, 2015 at 10:50 AM, Peter Bigot <bi...@ac...> wrote: > This isn't a PyXB issue. Your schema extract only allows for a single > Employee element with a single Address element. You're going to need to > use maxOccurs="unbounded" or some similar directive in the schema > definition. > > Peter > > On Fri, Apr 3, 2015 at 9:14 AM, Ajinkya Fotedar <aji...@gm...> > wrote: > >> I'd like to have multiple instances of complexTypes in an XML created >> from the bindings. Not sure if/how this can be done using BIND and/or >> append. >> Will try and explain with an example i'm playing with. >> >> *XML Schema…* >> <xs:schema elementFormDefault="qualified" xmlns:xs=" >> http://www.w3.org/2001/XMLSchema"> >> >> <xs:element name="Organization" type="OrganizationType"/> >> >> <xs:complexType name="OrganizationType"> >> <xs:sequence> >> <xs:element name="Name" type="xs:string"/> >> <xs:element name="Employee" type="EmployeeType"/> >> </xs:sequence> >> </xs:complexType> >> >> <xs:complexType name="EmployeeType"> >> <xs:sequence> >> <xs:element name="Name" type="xs:string"/> >> <xs:element name="Address" type="AddressType"/> >> </xs:sequence> >> </xs:complexType> >> >> <xs:complexType name="AddressType"> >> <xs:sequence> >> <xs:element name="Street" type="xs:string"/> >> <xs:element name="Town" type="xs:string"/> >> <xs:element name="County" type="xs:string"/> >> <xs:element name="PostCode" type="xs:integer”/> >> <xs:element name="Country" type="xs:string"/> >> </xs:sequence> >> </xs:complexType> >> >> </xs:schema> >> >> >> *Used the above schema for generating bindings…* >> pyxbgen -u organization.xsd -m organization >> >> >> *Used the ‘organization’ module for generating an xml...* >> import organization >> import pyxb >> >> org = organization.Organization() >> org.Employee = pyxb.BIND() >> org.Employee.Address = pyxb.BIND() >> org.Name = 'company1’ >> org.Employee.Name = 'name1’ >> org.Employee.Address.Street = 'street1’ >> org.Employee.Address.Town = 'town1’ >> org.Employee.Address.County = 'county1’ >> org.Employee.Address.PostCode = 54545 >> org.Employee.Address.Country = 'US' >> print (org.toxml('utf-8', element_name='Organization')) >> >> >> *Output…* >> <Organization> >> <Name>company1</Name> >> <Employee> >> <Name>name1</Name> >> <Address> >> <Street>street1</Street> >> <Town>town1</Town> >> <County>county1</County> >> <PostCode>54545</PostCode> >> <Country>US</Country> >> </Address> >> </Employee> >> </Organization> >> >> >> *What i'd like the o/p to be…* >> <Organization> >> <Name>company1</Name> >> <Employee> >> <Name>name1</Name> >> <Address> >> <Street>street1</Street> >> <Town>town1</Town> >> <County>county1</County> >> <PostCode>54545</PostCode> >> <Country>US</Country> >> </Address> >> <Address> >> <Street>street2</Street> >> <Town>town2</Town> >> <County>county2</County> >> <PostCode>77777</PostCode> >> <Country>US</Country> >> </Address> >> </Employee> >> </Organization> >> >> *OR…* >> <Organization> >> <Name>company1</Name> >> <Employee> >> <Name>name1</Name> >> <Address> >> <Street>street1</Street> >> <Town>town1</Town> >> <County>county1</County> >> <PostCode>54545</PostCode> >> <Country>US</Country> >> </Address> >> </Employee> >> <Employee> >> <Name>name2</Name> >> <Address> >> <Street>street2</Street> >> <Town>town2</Town> >> <County>county2</County> >> <PostCode>45454</PostCode> >> <Country>UK</Country> >> </Address> >> </Employee> >> </Organization> >> >> Would really appreciate if any one here could point me to the right >> direction. I believe BIND and append/extend will do the job. I have tried >> them from this link >> http://sourceforge.net/p/pyxb/discussion/956708/thread/c3da791a/#922f >> but nothing has worked out so far. >> >> Thank you. >> >> >> ------------------------------------------------------------------------------ >> Dive into the World of Parallel Programming The Go Parallel Website, >> sponsored >> by Intel and developed in partnership with Slashdot Media, is your hub >> for all >> things parallel software development, from weekly thought leadership >> blogs to >> news, videos, case studies, tutorials and more. Take a look and join the >> conversation now. http://goparallel.sourceforge.net/ >> _______________________________________________ >> pyxb-users mailing list >> pyx...@li... >> https://lists.sourceforge.net/lists/listinfo/pyxb-users >> >> > |