summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpab <bigot@acm.org>2009-11-20 17:29:19 -0700
committerpab <bigot@acm.org>2009-11-20 17:29:19 -0700
commit3399528c3024ce022acb86f5761f4b135f1e18a7 (patch)
treee98d6aa80e1bf7c82717251e6575fb9c5cff0ff9
parent18ad834cfd4d29b7bb2b6c8bfd1d01f8c15d6ff3 (diff)
Backport patch for #58PyXB-1.0.x
-rw-r--r--pyxb/binding/basis.py2
-rw-r--r--tests/trac/test-trac-0058.py35
2 files changed, 37 insertions, 0 deletions
diff --git a/pyxb/binding/basis.py b/pyxb/binding/basis.py
index cee8077..8f65938 100644
--- a/pyxb/binding/basis.py
+++ b/pyxb/binding/basis.py
@@ -734,6 +734,8 @@ class simpleTypeDefinition (_TypeBinding_mixin, utility._DeconflictSymbols_mixin
The base class implementation delegates to the object class's
XsdLiteral method."""
+ if self._isNil():
+ return ''
return self.XsdLiteral(self)
@classmethod
diff --git a/tests/trac/test-trac-0058.py b/tests/trac/test-trac-0058.py
new file mode 100644
index 0000000..47243b3
--- /dev/null
+++ b/tests/trac/test-trac-0058.py
@@ -0,0 +1,35 @@
+import pyxb.binding.generate
+import pyxb.binding.datatypes as xs
+import pyxb.binding.basis
+import pyxb.utils.domutils
+
+import os.path
+xsd='''
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="iopt" nillable="true" type="xs:integer"/>
+</xs:schema>
+'''
+
+#file('schema.xsd', 'w').write(xsd)
+code = pyxb.binding.generate.GeneratePython(schema_text=xsd)
+#file('code.py', 'w').write(code)
+#print code
+
+rv = compile(code, 'test', 'exec')
+eval(rv)
+
+from pyxb.exceptions_ import *
+
+import unittest
+
+class TestTrac_0058 (unittest.TestCase):
+ def testRoundTrip (self):
+ xml = '<iopt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"></iopt>'
+ instance = CreateFromDocument(xml)
+ self.assertTrue(instance._isNil())
+ self.assertEqual(0, instance)
+ self.assertEqual('', instance.xsdLiteral())
+ self.assertEqual(xml, instance.toxml(root_only=True))
+
+if __name__ == '__main__':
+ unittest.main()