diff options
author | pab <bigot@acm.org> | 2009-11-20 17:29:19 -0700 |
---|---|---|
committer | pab <bigot@acm.org> | 2009-11-20 17:29:19 -0700 |
commit | 3399528c3024ce022acb86f5761f4b135f1e18a7 (patch) | |
tree | e98d6aa80e1bf7c82717251e6575fb9c5cff0ff9 | |
parent | 18ad834cfd4d29b7bb2b6c8bfd1d01f8c15d6ff3 (diff) |
Backport patch for #58PyXB-1.0.x
-rw-r--r-- | pyxb/binding/basis.py | 2 | ||||
-rw-r--r-- | tests/trac/test-trac-0058.py | 35 |
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() |