From 1b05d1d624a8fbeff27a9802e0cd0cbf01aa9840 Mon Sep 17 00:00:00 2001
From: Dave Kuhlman <dkuhlman@davekuhlman.org>
Date: Thu, 16 Aug 2018 15:31:13 -0700
Subject: [PATCH] v. 2.29.23  Automatically create mandatory children

---
 README.rst                          |  10 +++++++
 generateDS.html                     |  23 +++++++++++++---
 generateDS.py                       |  40 +++++++++++++++++++++++++---
 generateDS.txt                      |  20 +++++++++++++-
 generateds_gui_notes.html           |   6 ++---
 generateds_gui_notes.txt            |   2 +-
 gui/generateds_gui.py               |   2 +-
 librarytemplate_howto.html          |   6 ++---
 librarytemplate_howto.txt           |   2 +-
 process_includes.py                 |   2 +-
 setup.py                            |   2 +-
 tests/annotations1_sup.py           |   4 +--
 tests/anywildcard1_sup.py           |   2 +-
 tests/defaults_cases1_sup.py        |  24 ++++++++---------
 tests/defaults_cases_always1_sup.py |  12 ++++-----
 tests/defaults_cases_always2_sup.py |  12 ++++-----
 tests/defaults_coverage1_sup.py     |  24 ++++++++---------
 tests/ipo1_sup.py                   |   6 ++---
 tests/ipo2_sup.py                   |   6 ++---
 tests/mapcleanname1_sup.py          |  28 +++++++++----------
 tests/mixedcontent1_sup.py          |   2 +-
 tests/mixedcontent2_sup.py          |   2 +-
 tests/out1_sup.py                   |  28 +++++++++----------
 tests/people_procincl1_sup.py       |  30 ++++++++++-----------
 tests/prefix_classname1_sup.py      |  28 +++++++++----------
 tests/recursive_simpletype1_sup.py  |   2 +-
 tests/reference_simpletype1_sup.py  |   4 +--
 tests/simpletypes_other1_sup.py     |  16 +++++------
 tests/to_etree1_sup.py              |  38 +++++++++++++-------------
 tests/validate_simpletypes1_sup.py  |  14 +++++-----
 tests/validate_simpletypes2_sup.py  |  14 +++++-----
 tutorial/generateds_tutorial.html   |   6 ++---
 tutorial/generateds_tutorial.txt    |   2 +-
 tutorial/generateds_tutorial.zip    | Bin 48768 -> 48772 bytes
 34 files changed, 248 insertions(+), 171 deletions(-)

diff --git a/README.rst b/README.rst
index ea22cdc..e692f4d 100644
--- a/README.rst
+++ b/README.rst
@@ -141,6 +141,16 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 Change history
 --------------
 
+Version 2.29.23 (08/16/2018)
+
+- Added new command line option "--create-mandatory-children".  If a
+  child is defined with minOccurs="1" and maxOccurs="1" and the
+  child is xs:complexType and the child is not defined with
+  xs:simpleContent, then in the element's constructor generate code
+  that automatically creates an instance of the child.  Thanks to
+  Vincent Helfre for analyzing this issue and providing guidance
+  toward a solution.
+
 Version 2.29.22 (08/03/2018)
 
 - Fixed exception that occurs when (1) an xs:complexType is defined
diff --git a/generateDS.html b/generateDS.html
index ae3ed47..6dda5e4 100644
--- a/generateDS.html
+++ b/generateDS.html
@@ -220,7 +220,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.22</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.23</td>
 </tr>
 </tbody>
 </table>
@@ -229,7 +229,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">August 03, 2018</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">August 16, 2018</td>
 </tr>
 </tbody>
 </table>
@@ -661,6 +661,14 @@ Options:
                              Default: &quot;[('[-:.]', '_')]&quot;
     --mixed-case-enums       If used, do not uppercase simpleType enums names.
                              Default is to make enum names uppercase.
+    --create-mandatory-children
+                             If a child is defined with minOccurs=&quot;1&quot; and
+                             maxOccurs=&quot;1&quot; and the child is xs:complexType
+                             and the child is not defined with
+                             xs:simpleContent, then in the element's
+                             constructor generate code that automatically
+                             creates an instance of the child.  The default
+                             is False, i.e. do not automatically create child.
     -q, --no-questions       Do not ask questions, for example,
                              force overwrite.
     --no-warnings            Do not print warning messages.
@@ -979,6 +987,15 @@ characters.  Example:
 <dd>Do not uppercase the names of simpleType enums.  The default (if
 this option is omitted) is to make generated enum names
 uppercase.</dd>
+<dt>create-mandatory-children</dt>
+<dd>If a child is defined with minOccurs=&quot;1&quot; and maxOccurs=&quot;1&quot; and
+the child is xs:complexType and the child is not defined with
+xs:simpleContent, then in the element's constructor generate
+code that automatically creates an instance of the child.  The
+default is False, i.e. do not automatically create the child.
+Note that if a value for the child's parameter is passed to the
+constructor (which overrides the default value of None), then
+the constructor will not create an instance.</dd>
 <dt>q, no-questions</dt>
 <dd>Do not ask questions.  For example, if the &quot;-f&quot; command line
 option is omitted and the ouput file exists, then generateDS.py
@@ -3392,7 +3409,7 @@ following among others:</p>
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateDS.txt">View document source</a>.
-Generated on: 2018-08-03 21:41 UTC.
+Generated on: 2018-08-16 22:29 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/generateDS.py b/generateDS.py
index b74ac86..0f47548 100755
--- a/generateDS.py
+++ b/generateDS.py
@@ -126,6 +126,14 @@ Options:
                              Default: "[('[-:.]', '_')]"
     --mixed-case-enums       If used, do not uppercase simpleType enums names.
                              Default is to make enum names uppercase.
+    --create-mandatory-children
+                             If a child is defined with minOccurs="1" and
+                             maxOccurs="1" and the child is xs:complexType
+                             and the child is not defined with
+                             xs:simpleContent, then in the element's
+                             constructor generate code that automatically
+                             creates an instance of the child.  The default
+                             is False, i.e. do not automatically create child.
     -q, --no-questions       Do not ask questions, for example,
                              force overwrite.
     --no-warnings            Do not print warning messages.
@@ -227,7 +235,7 @@ _log = logging.getLogger(__name__)
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.29.22'
+VERSION = '2.29.23'
 ##VERSION##
 
 BaseStrTypes = six.string_types
@@ -253,6 +261,7 @@ NoQuestions = False
 NoDates = False
 NoVersion = False
 AlwaysExportDefault = False
+CreateMandatoryChildren = False
 Dirpath = []
 ExternalEncoding = ''
 Namespacedef = ''
@@ -3707,7 +3716,8 @@ def generateBuildStandard_1(
             childType == NonPositiveIntegerType or
             childType == NegativeIntegerType or
             childType == NonNegativeIntegerType):
-        wrt("        %s nodeName_ == '%s':\n" % (keyword, origName, ))
+        wrt("        %s nodeName_ == '%s' and child_.text:\n" % (
+            keyword, origName, ))
         wrt("            sval_ = child_.text\n")
         wrt("            try:\n")
         wrt("                ival_ = int(sval_)\n")
@@ -3756,7 +3766,8 @@ def generateBuildStandard_1(
     elif (childType == FloatType or
             childType == DoubleType or
             childType == DecimalType):
-        wrt("        %s nodeName_ == '%s':\n" % (keyword, origName, ))
+        wrt("        %s nodeName_ == '%s' and child_.text:\n" % (
+            keyword, origName, ))
         wrt("            sval_ = child_.text\n")
         wrt("            try:\n")
         wrt("                fval_ = float(sval_)\n")
@@ -4239,6 +4250,11 @@ def generateCtor(wrt, prefix, element):
         _log.debug("Constructor child: %s" % name)
         _log.debug("Dump: %s" % child.__dict__)
         childType = child.getType()
+        childTypeDef = ElementDict.get(childType)
+        if childTypeDef is not None:
+            childSimpleContent = childTypeDef.getSimpleContent()
+        else:
+            childSimpleContent = False
         if childType == AnyTypeIdentifier:
             if child.getMaxOccurs() > 1:
                 wrt('        if anytypeobjs_ is None:\n')
@@ -4283,6 +4299,18 @@ def generateCtor(wrt, prefix, element):
                 wrt('            self.%s = []\n' % (name, ))
                 wrt('        else:\n')
                 wrt('            self.%s = %s\n' % (name, mbrname))
+            elif (CreateMandatoryChildren and
+                  child.getMinOccurs() == 1 and
+                  child.getMaxOccurs() == 1 and
+                  child.isComplex() and
+                  not childSimpleContent):
+                wrt('        if %s is None:\n' % (mbrname, ))
+                className = child.getType()
+                className = cleanupName(className)
+                wrt('            self.%s = globals()["%s"]()\n' % (
+                    name, className, ))
+                wrt('        else:\n')
+                wrt('            self.%s = %s\n' % (name, mbrname))
             else:
                 typeObj = ElementDict.get(child.getType())
                 if (child.getDefault() and
@@ -7266,7 +7294,7 @@ def main():
         UseGeneratedssuperLookup, UseSourceFileAsModuleName, \
         PreserveCdataTags, CleanupNameList, \
         NoWarnings, AlwaysExportDefault, \
-        UppercaseEnums
+        UppercaseEnums, CreateMandatoryChildren
     outputText = True
     args = sys.argv[1:]
     try:
@@ -7289,6 +7317,7 @@ def main():
                 'no-warnings',
                 'no-collect-includes', 'no-redefine-groups',
                 'always-export-default', 'mixed-case-enums',
+                'create-mandatory-children',
             ])
     except getopt.GetoptError:
         usage()
@@ -7312,6 +7341,7 @@ def main():
     noCollectIncludes = False
     noRedefineGroups = False
     UppercaseEnums = True
+    CreateMandatoryChildren = False
     for option in options:
         if option[0] == '--session':
             sessionFilename = option[1]
@@ -7496,6 +7526,8 @@ def main():
             AlwaysExportDefault = True
         elif option[0] == '--mixed-case-enums':
             UppercaseEnums = False
+        elif option[0] == '--create-mandatory-children':
+            CreateMandatoryChildren = True
     if showVersion:
         print('generateDS.py version %s' % VERSION)
         sys.exit(0)
diff --git a/generateDS.txt b/generateDS.txt
index 7df9aaf..df257a6 100644
--- a/generateDS.txt
+++ b/generateDS.txt
@@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema
 
 .. version
 
-:revision: 2.29.22
+:revision: 2.29.23
 
 .. version
 
@@ -348,6 +348,14 @@ Here is the usage message displayed by ``generateDS.py``::
                                  Default: "[('[-:.]', '_')]"
         --mixed-case-enums       If used, do not uppercase simpleType enums names.
                                  Default is to make enum names uppercase.
+        --create-mandatory-children
+                                 If a child is defined with minOccurs="1" and
+                                 maxOccurs="1" and the child is xs:complexType
+                                 and the child is not defined with
+                                 xs:simpleContent, then in the element's
+                                 constructor generate code that automatically
+                                 creates an instance of the child.  The default
+                                 is False, i.e. do not automatically create child.
         -q, --no-questions       Do not ask questions, for example,
                                  force overwrite.
         --no-warnings            Do not print warning messages.
@@ -701,6 +709,16 @@ mixed-case-enums
     this option is omitted) is to make generated enum names
     uppercase.
 
+create-mandatory-children
+    If a child is defined with minOccurs="1" and maxOccurs="1" and
+    the child is xs:complexType and the child is not defined with
+    xs:simpleContent, then in the element's constructor generate
+    code that automatically creates an instance of the child.  The
+    default is False, i.e. do not automatically create the child.
+    Note that if a value for the child's parameter is passed to the
+    constructor (which overrides the default value of None), then
+    the constructor will not create an instance.
+
 q, no-questions
     Do not ask questions.  For example, if the "-f" command line
     option is omitted and the ouput file exists, then generateDS.py
diff --git a/generateds_gui_notes.html b/generateds_gui_notes.html
index 1ef3444..4749cd3 100644
--- a/generateds_gui_notes.html
+++ b/generateds_gui_notes.html
@@ -220,7 +220,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.22</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.23</td>
 </tr>
 </tbody>
 </table>
@@ -229,7 +229,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">August 03, 2018</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">August 16, 2018</td>
 </tr>
 </tbody>
 </table>
@@ -401,7 +401,7 @@ $ mv generateds_gui.mo locale/ru/LC_MESSAGES/
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateds_gui_notes.txt">View document source</a>.
-Generated on: 2018-08-03 21:41 UTC.
+Generated on: 2018-08-16 22:29 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/generateds_gui_notes.txt b/generateds_gui_notes.txt
index 5cf503e..2bed923 100644
--- a/generateds_gui_notes.txt
+++ b/generateds_gui_notes.txt
@@ -12,7 +12,7 @@ GenerateDS GUI Notes
 
 .. version
 
-:revision: 2.29.22
+:revision: 2.29.23
 
 .. version
 
diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py
index 2abb8e5..c0c1d36 100644
--- a/gui/generateds_gui.py
+++ b/gui/generateds_gui.py
@@ -41,7 +41,7 @@ from libgenerateDS.gui import generateds_gui_session
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.29.22'
+VERSION = '2.29.23'
 ##VERSION##
 
 
diff --git a/librarytemplate_howto.html b/librarytemplate_howto.html
index 6f7d1f0..7049ae9 100644
--- a/librarytemplate_howto.html
+++ b/librarytemplate_howto.html
@@ -217,7 +217,7 @@ dkuhlman (at) davekuhlman (dot) org
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.22</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.23</td>
 </tr>
 </tbody>
 </table>
@@ -226,7 +226,7 @@ dkuhlman (at) davekuhlman (dot) org
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">August 03, 2018</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">August 16, 2018</td>
 </tr>
 </tbody>
 </table>
@@ -380,7 +380,7 @@ this command for your needs.  For example, you may need to use
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="librarytemplate_howto.txt">View document source</a>.
-Generated on: 2018-08-03 21:41 UTC.
+Generated on: 2018-08-16 22:29 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/librarytemplate_howto.txt b/librarytemplate_howto.txt
index 7b69843..971c8fd 100644
--- a/librarytemplate_howto.txt
+++ b/librarytemplate_howto.txt
@@ -8,7 +8,7 @@ How to package a generateDS.py generated library
 
 .. version
 
-:revision: 2.29.22
+:revision: 2.29.23
 
 .. version
 
diff --git a/process_includes.py b/process_includes.py
index 1c451f1..f083e63 100755
--- a/process_includes.py
+++ b/process_includes.py
@@ -40,7 +40,7 @@ except ImportError:
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-VERSION = '2.29.22'
+VERSION = '2.29.23'
 ##VERSION##
 
 CatalogDict = {}
diff --git a/setup.py b/setup.py
index 3feac89..834c8f3 100644
--- a/setup.py
+++ b/setup.py
@@ -8,7 +8,7 @@ setup(
 # Do not modify the following VERSION comments.
 # Used by updateversion.py.
 ##VERSION##
-    version="2.29.22",
+    version="2.29.23",
 ##VERSION##
     author="Dave Kuhlman",
     author_email="dkuhlman@davekuhlman.org",
diff --git a/tests/annotations1_sup.py b/tests/annotations1_sup.py
index bd590ce..0d81841 100644
--- a/tests/annotations1_sup.py
+++ b/tests/annotations1_sup.py
@@ -912,7 +912,7 @@ class document2Type(GeneratedsSuper):
             comments_ = child_.text
             comments_ = self.gds_validate_string(comments_, node, 'comments')
             self.comments = comments_
-        elif nodeName_ == 'rating':
+        elif nodeName_ == 'rating' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1011,7 +1011,7 @@ class document3Type(GeneratedsSuper):
             comments_ = child_.text
             comments_ = self.gds_validate_string(comments_, node, 'comments')
             self.comments = comments_
-        elif nodeName_ == 'rating':
+        elif nodeName_ == 'rating' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/anywildcard1_sup.py b/tests/anywildcard1_sup.py
index f8186dd..1965ae0 100644
--- a/tests/anywildcard1_sup.py
+++ b/tests/anywildcard1_sup.py
@@ -1106,7 +1106,7 @@ class CatalogType(GeneratedsSuper):
             name_ = child_.text
             name_ = self.gds_validate_string(name_, node, 'name')
             self.name = name_
-        elif nodeName_ == 'catagory':
+        elif nodeName_ == 'catagory' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/defaults_cases1_sup.py b/tests/defaults_cases1_sup.py
index 3209180..4538332 100644
--- a/tests/defaults_cases1_sup.py
+++ b/tests/defaults_cases1_sup.py
@@ -990,7 +990,7 @@ class DefaultType1(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         pass
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'normal01':
+        if nodeName_ == 'normal01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1002,7 +1002,7 @@ class DefaultType1(GeneratedsSuper):
             normal02_ = child_.text
             normal02_ = self.gds_validate_string(normal02_, node, 'normal02')
             self.normal02 = normal02_
-        elif nodeName_ == 'default01':
+        elif nodeName_ == 'default01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1014,7 +1014,7 @@ class DefaultType1(GeneratedsSuper):
             default02_ = child_.text
             default02_ = self.gds_validate_string(default02_, node, 'default02')
             self.default02 = default02_
-        elif nodeName_ == 'normal03':
+        elif nodeName_ == 'normal03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1022,7 +1022,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal03')
             self.normal03 = fval_
-        elif nodeName_ == 'normal04':
+        elif nodeName_ == 'normal04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1030,7 +1030,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal04')
             self.normal04 = fval_
-        elif nodeName_ == 'default03':
+        elif nodeName_ == 'default03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1038,7 +1038,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'default03')
             self.default03 = fval_
-        elif nodeName_ == 'default04':
+        elif nodeName_ == 'default04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1286,7 +1286,7 @@ class FixedType1(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         pass
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'normal01':
+        if nodeName_ == 'normal01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1298,7 +1298,7 @@ class FixedType1(GeneratedsSuper):
             normal02_ = child_.text
             normal02_ = self.gds_validate_string(normal02_, node, 'normal02')
             self.normal02 = normal02_
-        elif nodeName_ == 'fixed01':
+        elif nodeName_ == 'fixed01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1310,7 +1310,7 @@ class FixedType1(GeneratedsSuper):
             fixed02_ = child_.text
             fixed02_ = self.gds_validate_string(fixed02_, node, 'fixed02')
             self.fixed02 = fixed02_
-        elif nodeName_ == 'normal03':
+        elif nodeName_ == 'normal03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1318,7 +1318,7 @@ class FixedType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal03')
             self.normal03 = fval_
-        elif nodeName_ == 'normal04':
+        elif nodeName_ == 'normal04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1326,7 +1326,7 @@ class FixedType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal04')
             self.normal04 = fval_
-        elif nodeName_ == 'fixed03':
+        elif nodeName_ == 'fixed03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1334,7 +1334,7 @@ class FixedType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'fixed03')
             self.fixed03 = fval_
-        elif nodeName_ == 'fixed04':
+        elif nodeName_ == 'fixed04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
diff --git a/tests/defaults_cases_always1_sup.py b/tests/defaults_cases_always1_sup.py
index c4a28c0..fc155a5 100644
--- a/tests/defaults_cases_always1_sup.py
+++ b/tests/defaults_cases_always1_sup.py
@@ -955,7 +955,7 @@ class DefaultType1(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         pass
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'normal01':
+        if nodeName_ == 'normal01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -967,7 +967,7 @@ class DefaultType1(GeneratedsSuper):
             normal02_ = child_.text
             normal02_ = self.gds_validate_string(normal02_, node, 'normal02')
             self.normal02 = normal02_
-        elif nodeName_ == 'default01':
+        elif nodeName_ == 'default01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -979,7 +979,7 @@ class DefaultType1(GeneratedsSuper):
             default02_ = child_.text
             default02_ = self.gds_validate_string(default02_, node, 'default02')
             self.default02 = default02_
-        elif nodeName_ == 'normal03':
+        elif nodeName_ == 'normal03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -987,7 +987,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal03')
             self.normal03 = fval_
-        elif nodeName_ == 'normal04':
+        elif nodeName_ == 'normal04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -995,7 +995,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal04')
             self.normal04 = fval_
-        elif nodeName_ == 'default03':
+        elif nodeName_ == 'default03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1003,7 +1003,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'default03')
             self.default03 = fval_
-        elif nodeName_ == 'default04':
+        elif nodeName_ == 'default04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
diff --git a/tests/defaults_cases_always2_sup.py b/tests/defaults_cases_always2_sup.py
index c4a28c0..fc155a5 100644
--- a/tests/defaults_cases_always2_sup.py
+++ b/tests/defaults_cases_always2_sup.py
@@ -955,7 +955,7 @@ class DefaultType1(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         pass
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'normal01':
+        if nodeName_ == 'normal01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -967,7 +967,7 @@ class DefaultType1(GeneratedsSuper):
             normal02_ = child_.text
             normal02_ = self.gds_validate_string(normal02_, node, 'normal02')
             self.normal02 = normal02_
-        elif nodeName_ == 'default01':
+        elif nodeName_ == 'default01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -979,7 +979,7 @@ class DefaultType1(GeneratedsSuper):
             default02_ = child_.text
             default02_ = self.gds_validate_string(default02_, node, 'default02')
             self.default02 = default02_
-        elif nodeName_ == 'normal03':
+        elif nodeName_ == 'normal03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -987,7 +987,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal03')
             self.normal03 = fval_
-        elif nodeName_ == 'normal04':
+        elif nodeName_ == 'normal04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -995,7 +995,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal04')
             self.normal04 = fval_
-        elif nodeName_ == 'default03':
+        elif nodeName_ == 'default03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1003,7 +1003,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'default03')
             self.default03 = fval_
-        elif nodeName_ == 'default04':
+        elif nodeName_ == 'default04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
diff --git a/tests/defaults_coverage1_sup.py b/tests/defaults_coverage1_sup.py
index 052c02a..318cf4a 100644
--- a/tests/defaults_coverage1_sup.py
+++ b/tests/defaults_coverage1_sup.py
@@ -1039,7 +1039,7 @@ class DefaultType1(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         pass
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'default01':
+        if nodeName_ == 'default01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1047,7 +1047,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'default01')
             self.default01 = ival_
-        elif nodeName_ == 'normal01':
+        elif nodeName_ == 'normal01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1063,7 +1063,7 @@ class DefaultType1(GeneratedsSuper):
             normal02_ = child_.text
             normal02_ = self.gds_validate_string(normal02_, node, 'normal02')
             self.normal02 = normal02_
-        elif nodeName_ == 'default03':
+        elif nodeName_ == 'default03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1071,7 +1071,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'default03')
             self.default03 = fval_
-        elif nodeName_ == 'normal03':
+        elif nodeName_ == 'normal03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1079,7 +1079,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal03')
             self.normal03 = fval_
-        elif nodeName_ == 'default04':
+        elif nodeName_ == 'default04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1087,7 +1087,7 @@ class DefaultType1(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'default04')
             self.default04 = fval_
-        elif nodeName_ == 'normal04':
+        elif nodeName_ == 'normal04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1374,7 +1374,7 @@ class DefaultType2(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         pass
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'default01':
+        if nodeName_ == 'default01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1382,7 +1382,7 @@ class DefaultType2(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'default01')
             self.default01 = ival_
-        elif nodeName_ == 'normal01':
+        elif nodeName_ == 'normal01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1398,7 +1398,7 @@ class DefaultType2(GeneratedsSuper):
             normal02_ = child_.text
             normal02_ = self.gds_validate_string(normal02_, node, 'normal02')
             self.normal02 = normal02_
-        elif nodeName_ == 'default03':
+        elif nodeName_ == 'default03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1406,7 +1406,7 @@ class DefaultType2(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'default03')
             self.default03 = fval_
-        elif nodeName_ == 'normal03':
+        elif nodeName_ == 'normal03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1414,7 +1414,7 @@ class DefaultType2(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'normal03')
             self.normal03 = fval_
-        elif nodeName_ == 'default04':
+        elif nodeName_ == 'default04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1422,7 +1422,7 @@ class DefaultType2(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'default04')
             self.default04 = fval_
-        elif nodeName_ == 'normal04':
+        elif nodeName_ == 'normal04' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
diff --git a/tests/ipo1_sup.py b/tests/ipo1_sup.py
index 82cd1f9..9f64f69 100644
--- a/tests/ipo1_sup.py
+++ b/tests/ipo1_sup.py
@@ -1067,7 +1067,7 @@ class item(GeneratedsSuper):
             productName_ = child_.text
             productName_ = self.gds_validate_string(productName_, node, 'productName')
             self.productName = productName_
-        elif nodeName_ == 'quantity':
+        elif nodeName_ == 'quantity' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1077,7 +1077,7 @@ class item(GeneratedsSuper):
                 raise_parse_error(child_, 'requires positiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'quantity')
             self.quantity = ival_
-        elif nodeName_ == 'USPrice':
+        elif nodeName_ == 'USPrice' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1371,7 +1371,7 @@ class USAddress(Address):
             self.state = state_
             # validate type USState
             self.validate_USState(self.state)
-        elif nodeName_ == 'zip':
+        elif nodeName_ == 'zip' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/ipo2_sup.py b/tests/ipo2_sup.py
index 82cd1f9..9f64f69 100644
--- a/tests/ipo2_sup.py
+++ b/tests/ipo2_sup.py
@@ -1067,7 +1067,7 @@ class item(GeneratedsSuper):
             productName_ = child_.text
             productName_ = self.gds_validate_string(productName_, node, 'productName')
             self.productName = productName_
-        elif nodeName_ == 'quantity':
+        elif nodeName_ == 'quantity' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1077,7 +1077,7 @@ class item(GeneratedsSuper):
                 raise_parse_error(child_, 'requires positiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'quantity')
             self.quantity = ival_
-        elif nodeName_ == 'USPrice':
+        elif nodeName_ == 'USPrice' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1371,7 +1371,7 @@ class USAddress(Address):
             self.state = state_
             # validate type USState
             self.validate_USState(self.state)
-        elif nodeName_ == 'zip':
+        elif nodeName_ == 'zip' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/mapcleanname1_sup.py b/tests/mapcleanname1_sup.py
index 2c6b831..0dfcead 100644
--- a/tests/mapcleanname1_sup.py
+++ b/tests/mapcleanname1_sup.py
@@ -831,7 +831,7 @@ class complex_type01(GeneratedsSuper):
             string_value01_ = child_.text
             string_value01_ = self.gds_validate_string(string_value01_, node, 'string_value01')
             self.string_value01 = string_value01_
-        elif nodeName_ == 'integer_value01':
+        elif nodeName_ == 'integer_value01' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -839,7 +839,7 @@ class complex_type01(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'integer_value01')
             self.integer_value01.append(ival_)
-        elif nodeName_ == 'float_value01':
+        elif nodeName_ == 'float_value01' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -961,7 +961,7 @@ class complex_type02(GeneratedsSuper):
             string_value02_ = child_.text
             string_value02_ = self.gds_validate_string(string_value02_, node, 'string_value02')
             self.string_value02 = string_value02_
-        elif nodeName_ == 'integer_value02':
+        elif nodeName_ == 'integer_value02' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -969,7 +969,7 @@ class complex_type02(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'integer_value02')
             self.integer_value02.append(ival_)
-        elif nodeName_ == 'float_value02':
+        elif nodeName_ == 'float_value02' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1079,7 +1079,7 @@ class complex_type03(complex_type02):
             string_value03_ = child_.text
             string_value03_ = self.gds_validate_string(string_value03_, node, 'string_value03')
             self.string_value03 = string_value03_
-        elif nodeName_ == 'integer_value03':
+        elif nodeName_ == 'integer_value03' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1087,7 +1087,7 @@ class complex_type03(complex_type02):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'integer_value03')
             self.integer_value03.append(ival_)
-        elif nodeName_ == 'float_value03':
+        elif nodeName_ == 'float_value03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1205,7 +1205,7 @@ class type_(GeneratedsSuper):
             string_value02_ = child_.text
             string_value02_ = self.gds_validate_string(string_value02_, node, 'string_value02')
             self.string_value02 = string_value02_
-        elif nodeName_ == 'integer_value02':
+        elif nodeName_ == 'integer_value02' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1213,7 +1213,7 @@ class type_(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'integer_value02')
             self.integer_value02.append(ival_)
-        elif nodeName_ == 'float_value02':
+        elif nodeName_ == 'float_value02' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1323,7 +1323,7 @@ class complex_type04(type_):
             string_value03_ = child_.text
             string_value03_ = self.gds_validate_string(string_value03_, node, 'string_value03')
             self.string_value03 = string_value03_
-        elif nodeName_ == 'integer_value03':
+        elif nodeName_ == 'integer_value03' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1331,7 +1331,7 @@ class complex_type04(type_):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'integer_value03')
             self.integer_value03.append(ival_)
-        elif nodeName_ == 'float_value03':
+        elif nodeName_ == 'float_value03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1449,7 +1449,7 @@ class build_(GeneratedsSuper):
             string_value02_ = child_.text
             string_value02_ = self.gds_validate_string(string_value02_, node, 'string_value02')
             self.string_value02 = string_value02_
-        elif nodeName_ == 'integer_value02':
+        elif nodeName_ == 'integer_value02' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1457,7 +1457,7 @@ class build_(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'integer_value02')
             self.integer_value02.append(ival_)
-        elif nodeName_ == 'float_value02':
+        elif nodeName_ == 'float_value02' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1567,7 +1567,7 @@ class complex_type05(build_):
             string_value03_ = child_.text
             string_value03_ = self.gds_validate_string(string_value03_, node, 'string_value03')
             self.string_value03 = string_value03_
-        elif nodeName_ == 'integer_value03':
+        elif nodeName_ == 'integer_value03' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1575,7 +1575,7 @@ class complex_type05(build_):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'integer_value03')
             self.integer_value03.append(ival_)
-        elif nodeName_ == 'float_value03':
+        elif nodeName_ == 'float_value03' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
diff --git a/tests/mixedcontent1_sup.py b/tests/mixedcontent1_sup.py
index 4c311da..218fff3 100644
--- a/tests/mixedcontent1_sup.py
+++ b/tests/mixedcontent1_sup.py
@@ -1055,7 +1055,7 @@ class nestedType(GeneratedsSuper):
             nested2_ = child_.text
             nested2_ = self.gds_validate_string(nested2_, node, 'nested2')
             self.nested2.append(nested2_)
-        elif nodeName_ == 'nested3':
+        elif nodeName_ == 'nested3' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/mixedcontent2_sup.py b/tests/mixedcontent2_sup.py
index 4c311da..218fff3 100644
--- a/tests/mixedcontent2_sup.py
+++ b/tests/mixedcontent2_sup.py
@@ -1055,7 +1055,7 @@ class nestedType(GeneratedsSuper):
             nested2_ = child_.text
             nested2_ = self.gds_validate_string(nested2_, node, 'nested2')
             self.nested2.append(nested2_)
-        elif nodeName_ == 'nested3':
+        elif nodeName_ == 'nested3' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/out1_sup.py b/tests/out1_sup.py
index 93c8498..12f1c21 100644
--- a/tests/out1_sup.py
+++ b/tests/out1_sup.py
@@ -1460,7 +1460,7 @@ class person(GeneratedsSuper):
             interest_ = child_.text
             interest_ = self.gds_validate_string(interest_, node, 'interest')
             self.interest.append(interest_)
-        elif nodeName_ == 'category':
+        elif nodeName_ == 'category' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1886,7 +1886,7 @@ class programmer(person):
             email_ = child_.text
             email_ = self.gds_validate_string(email_, node, 'email')
             self.email = email_
-        elif nodeName_ == 'elposint':
+        elif nodeName_ == 'elposint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1896,7 +1896,7 @@ class programmer(person):
                 raise_parse_error(child_, 'requires positiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elposint')
             self.elposint = ival_
-        elif nodeName_ == 'elnonposint':
+        elif nodeName_ == 'elnonposint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1906,7 +1906,7 @@ class programmer(person):
                 raise_parse_error(child_, 'requires nonPositiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elnonposint')
             self.elnonposint = ival_
-        elif nodeName_ == 'elnegint':
+        elif nodeName_ == 'elnegint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1916,7 +1916,7 @@ class programmer(person):
                 raise_parse_error(child_, 'requires negativeInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elnegint')
             self.elnegint = ival_
-        elif nodeName_ == 'elnonnegint':
+        elif nodeName_ == 'elnonnegint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1942,7 +1942,7 @@ class programmer(person):
                 eltoken_ = ""
             eltoken_ = self.gds_validate_string(eltoken_, node, 'eltoken')
             self.eltoken = eltoken_
-        elif nodeName_ == 'elshort':
+        elif nodeName_ == 'elshort' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1950,7 +1950,7 @@ class programmer(person):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'elshort')
             self.elshort = ival_
-        elif nodeName_ == 'ellong':
+        elif nodeName_ == 'ellong' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2686,7 +2686,7 @@ class agent(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2873,7 +2873,7 @@ class special_agent(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -3129,7 +3129,7 @@ class booster(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'other-name':
+        elif nodeName_ == 'other-name' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -3137,7 +3137,7 @@ class booster(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'other_name')
             self.other_name = fval_
-        elif nodeName_ == 'class':
+        elif nodeName_ == 'class' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -3145,7 +3145,7 @@ class booster(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'class')
             self.class_ = fval_
-        elif nodeName_ == 'other-value':
+        elif nodeName_ == 'other-value' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -3153,7 +3153,7 @@ class booster(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'other_value')
             self.other_value.append(fval_)
-        elif nodeName_ == 'type':
+        elif nodeName_ == 'type' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -3479,7 +3479,7 @@ class client_handlerType(GeneratedsSuper):
             fullname_ = child_.text
             fullname_ = self.gds_validate_string(fullname_, node, 'fullname')
             self.fullname = fullname_
-        elif nodeName_ == 'refid':
+        elif nodeName_ == 'refid' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/people_procincl1_sup.py b/tests/people_procincl1_sup.py
index 11849ef..2264fa3 100644
--- a/tests/people_procincl1_sup.py
+++ b/tests/people_procincl1_sup.py
@@ -1247,7 +1247,7 @@ class person(GeneratedsSuper):
             interest_ = child_.text
             interest_ = self.gds_validate_string(interest_, node, 'interest')
             self.interest.append(interest_)
-        elif nodeName_ == 'category':
+        elif nodeName_ == 'category' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1588,7 +1588,7 @@ class agent(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1726,7 +1726,7 @@ class special_agent(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1894,7 +1894,7 @@ class booster(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'other-name':
+        elif nodeName_ == 'other-name' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1902,7 +1902,7 @@ class booster(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'other_name')
             self.other_name = fval_
-        elif nodeName_ == 'class':
+        elif nodeName_ == 'class' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1910,7 +1910,7 @@ class booster(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'class')
             self.class_ = fval_
-        elif nodeName_ == 'other-value':
+        elif nodeName_ == 'other-value' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1918,7 +1918,7 @@ class booster(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'other_value')
             self.other_value.append(fval_)
-        elif nodeName_ == 'type':
+        elif nodeName_ == 'type' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2114,7 +2114,7 @@ class vehicle(GeneratedsSuper):
             already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'wheelcount':
+        if nodeName_ == 'wheelcount' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2559,7 +2559,7 @@ class programmer(person):
             email_ = child_.text
             email_ = self.gds_validate_string(email_, node, 'email')
             self.email = email_
-        elif nodeName_ == 'elposint':
+        elif nodeName_ == 'elposint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2569,7 +2569,7 @@ class programmer(person):
                 raise_parse_error(child_, 'requires positiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elposint')
             self.elposint = ival_
-        elif nodeName_ == 'elnonposint':
+        elif nodeName_ == 'elnonposint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2579,7 +2579,7 @@ class programmer(person):
                 raise_parse_error(child_, 'requires nonPositiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elnonposint')
             self.elnonposint = ival_
-        elif nodeName_ == 'elnegint':
+        elif nodeName_ == 'elnegint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2589,7 +2589,7 @@ class programmer(person):
                 raise_parse_error(child_, 'requires negativeInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elnegint')
             self.elnegint = ival_
-        elif nodeName_ == 'elnonnegint':
+        elif nodeName_ == 'elnonnegint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2611,7 +2611,7 @@ class programmer(person):
                 eltoken_ = ""
             eltoken_ = self.gds_validate_string(eltoken_, node, 'eltoken')
             self.eltoken = eltoken_
-        elif nodeName_ == 'elshort':
+        elif nodeName_ == 'elshort' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2619,7 +2619,7 @@ class programmer(person):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'elshort')
             self.elshort = ival_
-        elif nodeName_ == 'ellong':
+        elif nodeName_ == 'ellong' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2724,7 +2724,7 @@ class client_handlerType(GeneratedsSuper):
             fullname_ = child_.text
             fullname_ = self.gds_validate_string(fullname_, node, 'fullname')
             self.fullname = fullname_
-        elif nodeName_ == 'refid':
+        elif nodeName_ == 'refid' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/prefix_classname1_sup.py b/tests/prefix_classname1_sup.py
index 7d3c39a..ccaed97 100644
--- a/tests/prefix_classname1_sup.py
+++ b/tests/prefix_classname1_sup.py
@@ -1206,7 +1206,7 @@ class tomato_person(GeneratedsSuper):
             interest_ = child_.text
             interest_ = self.gds_validate_string(interest_, node, 'interest')
             self.interest.append(interest_)
-        elif nodeName_ == 'category':
+        elif nodeName_ == 'category' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1513,7 +1513,7 @@ class tomato_programmer(tomato_person):
             email_ = child_.text
             email_ = self.gds_validate_string(email_, node, 'email')
             self.email = email_
-        elif nodeName_ == 'elposint':
+        elif nodeName_ == 'elposint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1523,7 +1523,7 @@ class tomato_programmer(tomato_person):
                 raise_parse_error(child_, 'requires positiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elposint')
             self.elposint = ival_
-        elif nodeName_ == 'elnonposint':
+        elif nodeName_ == 'elnonposint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1533,7 +1533,7 @@ class tomato_programmer(tomato_person):
                 raise_parse_error(child_, 'requires nonPositiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elnonposint')
             self.elnonposint = ival_
-        elif nodeName_ == 'elnegint':
+        elif nodeName_ == 'elnegint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1543,7 +1543,7 @@ class tomato_programmer(tomato_person):
                 raise_parse_error(child_, 'requires negativeInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elnegint')
             self.elnegint = ival_
-        elif nodeName_ == 'elnonnegint':
+        elif nodeName_ == 'elnonnegint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1569,7 +1569,7 @@ class tomato_programmer(tomato_person):
                 eltoken_ = ""
             eltoken_ = self.gds_validate_string(eltoken_, node, 'eltoken')
             self.eltoken = eltoken_
-        elif nodeName_ == 'elshort':
+        elif nodeName_ == 'elshort' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1577,7 +1577,7 @@ class tomato_programmer(tomato_person):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'elshort')
             self.elshort = ival_
-        elif nodeName_ == 'ellong':
+        elif nodeName_ == 'ellong' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2032,7 +2032,7 @@ class tomato_agent(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2149,7 +2149,7 @@ class tomato_special_agent(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2308,7 +2308,7 @@ class tomato_booster(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'other-name':
+        elif nodeName_ == 'other-name' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2316,7 +2316,7 @@ class tomato_booster(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'other_name')
             self.other_name = fval_
-        elif nodeName_ == 'class':
+        elif nodeName_ == 'class' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2324,7 +2324,7 @@ class tomato_booster(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'class')
             self.class_ = fval_
-        elif nodeName_ == 'other-value':
+        elif nodeName_ == 'other-value' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2332,7 +2332,7 @@ class tomato_booster(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'other_value')
             self.other_value.append(fval_)
-        elif nodeName_ == 'type':
+        elif nodeName_ == 'type' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2530,7 +2530,7 @@ class tomato_client_handlerType(GeneratedsSuper):
             fullname_ = child_.text
             fullname_ = self.gds_validate_string(fullname_, node, 'fullname')
             self.fullname = fullname_
-        elif nodeName_ == 'refid':
+        elif nodeName_ == 'refid' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/recursive_simpletype1_sup.py b/tests/recursive_simpletype1_sup.py
index ad25d51..850c8c3 100644
--- a/tests/recursive_simpletype1_sup.py
+++ b/tests/recursive_simpletype1_sup.py
@@ -814,7 +814,7 @@ class PersonType(GeneratedsSuper):
     def buildAttributes(self, node, attrs, already_processed):
         pass
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'personId':
+        if nodeName_ == 'personId' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/reference_simpletype1_sup.py b/tests/reference_simpletype1_sup.py
index a65f200..9b1015f 100644
--- a/tests/reference_simpletype1_sup.py
+++ b/tests/reference_simpletype1_sup.py
@@ -833,7 +833,7 @@ class dummy(GeneratedsSuper):
             except ValueError as exp:
                 raise_parse_error(node, 'Bad integer attribute: %s' % exp)
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'test_ref_element':
+        if nodeName_ == 'test_ref_element' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -841,7 +841,7 @@ class dummy(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'test_ref_element')
             self.test_ref_element = ival_
-        elif nodeName_ == 'test_normal_element':
+        elif nodeName_ == 'test_normal_element' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/simpletypes_other1_sup.py b/tests/simpletypes_other1_sup.py
index 2e3d062..1a9c411 100644
--- a/tests/simpletypes_other1_sup.py
+++ b/tests/simpletypes_other1_sup.py
@@ -1117,7 +1117,7 @@ class simpleTypeTestDefs(GeneratedsSuper):
             datetime5_ = child_.text
             datetime5_ = self.gds_validate_string(datetime5_, node, 'datetime5')
             self.datetime5 = datetime5_
-        elif nodeName_ == 'integerVal1':
+        elif nodeName_ == 'integerVal1' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1125,7 +1125,7 @@ class simpleTypeTestDefs(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'integerVal1')
             self.integerVal1 = ival_
-        elif nodeName_ == 'integerVal2':
+        elif nodeName_ == 'integerVal2' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1161,7 +1161,7 @@ class simpleTypeTestDefs(GeneratedsSuper):
                 raise_parse_error(child_, 'requires boolean')
             ival_ = self.gds_validate_boolean(ival_, node, 'booleanVal2')
             self.booleanVal2.append(ival_)
-        elif nodeName_ == 'decimalVal1':
+        elif nodeName_ == 'decimalVal1' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1169,7 +1169,7 @@ class simpleTypeTestDefs(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'decimalVal1')
             self.decimalVal1 = fval_
-        elif nodeName_ == 'decimalVal2':
+        elif nodeName_ == 'decimalVal2' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1177,7 +1177,7 @@ class simpleTypeTestDefs(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'decimalVal2')
             self.decimalVal2.append(fval_)
-        elif nodeName_ == 'doubleVal1':
+        elif nodeName_ == 'doubleVal1' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1185,7 +1185,7 @@ class simpleTypeTestDefs(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'doubleVal1')
             self.doubleVal1 = fval_
-        elif nodeName_ == 'doubleVal2':
+        elif nodeName_ == 'doubleVal2' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1193,7 +1193,7 @@ class simpleTypeTestDefs(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'doubleVal2')
             self.doubleVal2.append(fval_)
-        elif nodeName_ == 'floatVal1':
+        elif nodeName_ == 'floatVal1' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1201,7 +1201,7 @@ class simpleTypeTestDefs(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'floatVal1')
             self.floatVal1 = fval_
-        elif nodeName_ == 'floatVal2':
+        elif nodeName_ == 'floatVal2' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
diff --git a/tests/to_etree1_sup.py b/tests/to_etree1_sup.py
index d360208..93dfd28 100644
--- a/tests/to_etree1_sup.py
+++ b/tests/to_etree1_sup.py
@@ -1192,7 +1192,7 @@ class personType(GeneratedsSuper):
             interest_ = child_.text
             interest_ = self.gds_validate_string(interest_, node, 'interest')
             self.interest.append(interest_)
-        elif nodeName_ == 'category':
+        elif nodeName_ == 'category' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1220,7 +1220,7 @@ class personType(GeneratedsSuper):
             description_ = child_.text
             description_ = self.gds_validate_string(description_, node, 'description')
             self.description = description_
-        elif nodeName_ == 'range':
+        elif nodeName_ == 'range' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1542,7 +1542,7 @@ class programmerType(personType):
             email_ = child_.text
             email_ = self.gds_validate_string(email_, node, 'email')
             self.email = email_
-        elif nodeName_ == 'elposint':
+        elif nodeName_ == 'elposint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1552,7 +1552,7 @@ class programmerType(personType):
                 raise_parse_error(child_, 'requires positiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elposint')
             self.elposint = ival_
-        elif nodeName_ == 'elnonposint':
+        elif nodeName_ == 'elnonposint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1562,7 +1562,7 @@ class programmerType(personType):
                 raise_parse_error(child_, 'requires nonPositiveInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elnonposint')
             self.elnonposint = ival_
-        elif nodeName_ == 'elnegint':
+        elif nodeName_ == 'elnegint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1572,7 +1572,7 @@ class programmerType(personType):
                 raise_parse_error(child_, 'requires negativeInteger')
             ival_ = self.gds_validate_integer(ival_, node, 'elnegint')
             self.elnegint = ival_
-        elif nodeName_ == 'elnonnegint':
+        elif nodeName_ == 'elnonnegint' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1602,7 +1602,7 @@ class programmerType(personType):
                 eltoken_ = ""
             eltoken_ = self.gds_validate_string(eltoken_, node, 'eltoken')
             self.eltoken = eltoken_
-        elif nodeName_ == 'elshort':
+        elif nodeName_ == 'elshort' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1610,7 +1610,7 @@ class programmerType(personType):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'elshort')
             self.elshort = ival_
-        elif nodeName_ == 'ellong':
+        elif nodeName_ == 'ellong' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1864,7 +1864,7 @@ class python_programmerType(programmerType):
             favorite_editor_ = child_.text
             favorite_editor_ = self.gds_validate_string(favorite_editor_, node, 'favorite_editor')
             self.favorite_editor = favorite_editor_
-        elif nodeName_ == 'flowvalue':
+        elif nodeName_ == 'flowvalue' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2122,7 +2122,7 @@ class agentType(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2240,7 +2240,7 @@ class special_agentType(agentType):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2340,7 +2340,7 @@ class weird_agentType(agentType):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2487,7 +2487,7 @@ class boosterType(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'other-name':
+        elif nodeName_ == 'other-name' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2495,7 +2495,7 @@ class boosterType(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'other_name')
             self.other_name = fval_
-        elif nodeName_ == 'class':
+        elif nodeName_ == 'class' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2503,7 +2503,7 @@ class boosterType(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'class')
             self.class_ = fval_
-        elif nodeName_ == 'other-value':
+        elif nodeName_ == 'other-value' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2511,7 +2511,7 @@ class boosterType(GeneratedsSuper):
                 raise_parse_error(child_, 'requires float or double: %s' % exp)
             fval_ = self.gds_validate_float(fval_, node, 'other_value')
             self.other_value.append(fval_)
-        elif nodeName_ == 'type':
+        elif nodeName_ == 'type' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2667,7 +2667,7 @@ class vehicleType(GeneratedsSuper):
             already_processed.add('xsi:type')
             self.extensiontype_ = value
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'wheelcount':
+        if nodeName_ == 'wheelcount' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -2884,7 +2884,7 @@ class hot_agent(GeneratedsSuper):
             lastname_ = child_.text
             lastname_ = self.gds_validate_string(lastname_, node, 'lastname')
             self.lastname = lastname_
-        elif nodeName_ == 'priority':
+        elif nodeName_ == 'priority' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -2961,7 +2961,7 @@ class client_handlerType(GeneratedsSuper):
             fullname_ = child_.text
             fullname_ = self.gds_validate_string(fullname_, node, 'fullname')
             self.fullname = fullname_
-        elif nodeName_ == 'refid':
+        elif nodeName_ == 'refid' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
diff --git a/tests/validate_simpletypes1_sup.py b/tests/validate_simpletypes1_sup.py
index 772c0fd..98d98e8 100644
--- a/tests/validate_simpletypes1_sup.py
+++ b/tests/validate_simpletypes1_sup.py
@@ -1361,7 +1361,7 @@ class simpleOneType(GeneratedsSuper):
             self.integer_range_1_value_with_default = value
             self.validate_integer_range_1_st(self.integer_range_1_value_with_default)    # validate type integer_range_1_st
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'integer_range_1_value':
+        if nodeName_ == 'integer_range_1_value' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1383,7 +1383,7 @@ class simpleOneType(GeneratedsSuper):
             self.token_enum_value = token_enum_value_
             # validate type token_enum_st
             self.validate_token_enum_st(self.token_enum_value)
-        elif nodeName_ == 'integer_range_incl_value':
+        elif nodeName_ == 'integer_range_incl_value' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1393,7 +1393,7 @@ class simpleOneType(GeneratedsSuper):
             self.integer_range_incl_value = ival_
             # validate type integer_range_incl_st
             self.validate_integer_range_incl_st(self.integer_range_incl_value)
-        elif nodeName_ == 'integer_range_excl_value':
+        elif nodeName_ == 'integer_range_excl_value' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1415,7 +1415,7 @@ class simpleOneType(GeneratedsSuper):
             self.length_value = length_value_
             # validate type length_st
             self.validate_length_st(self.length_value)
-        elif nodeName_ == 'totalDigits_value':
+        elif nodeName_ == 'totalDigits_value' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1509,7 +1509,7 @@ class simpleOneType(GeneratedsSuper):
             self.unicode_pattern_value = unicode_pattern_value_
             # validate type unicode_pattern_st
             self.validate_unicode_pattern_st(self.unicode_pattern_value)
-        elif nodeName_ == 'anonymous_float_value':
+        elif nodeName_ == 'anonymous_float_value' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1519,7 +1519,7 @@ class simpleOneType(GeneratedsSuper):
             self.anonymous_float_value = fval_
             # validate type anonymous_float_valueType
             self.validate_anonymous_float_valueType(self.anonymous_float_value)
-        elif nodeName_ == 'primative_integer':
+        elif nodeName_ == 'primative_integer' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1527,7 +1527,7 @@ class simpleOneType(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'primative_integer')
             self.primative_integer = ival_
-        elif nodeName_ == 'primative_float':
+        elif nodeName_ == 'primative_float' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
diff --git a/tests/validate_simpletypes2_sup.py b/tests/validate_simpletypes2_sup.py
index 772c0fd..98d98e8 100644
--- a/tests/validate_simpletypes2_sup.py
+++ b/tests/validate_simpletypes2_sup.py
@@ -1361,7 +1361,7 @@ class simpleOneType(GeneratedsSuper):
             self.integer_range_1_value_with_default = value
             self.validate_integer_range_1_st(self.integer_range_1_value_with_default)    # validate type integer_range_1_st
     def buildChildren(self, child_, node, nodeName_, fromsubclass_=False):
-        if nodeName_ == 'integer_range_1_value':
+        if nodeName_ == 'integer_range_1_value' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1383,7 +1383,7 @@ class simpleOneType(GeneratedsSuper):
             self.token_enum_value = token_enum_value_
             # validate type token_enum_st
             self.validate_token_enum_st(self.token_enum_value)
-        elif nodeName_ == 'integer_range_incl_value':
+        elif nodeName_ == 'integer_range_incl_value' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1393,7 +1393,7 @@ class simpleOneType(GeneratedsSuper):
             self.integer_range_incl_value = ival_
             # validate type integer_range_incl_st
             self.validate_integer_range_incl_st(self.integer_range_incl_value)
-        elif nodeName_ == 'integer_range_excl_value':
+        elif nodeName_ == 'integer_range_excl_value' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1415,7 +1415,7 @@ class simpleOneType(GeneratedsSuper):
             self.length_value = length_value_
             # validate type length_st
             self.validate_length_st(self.length_value)
-        elif nodeName_ == 'totalDigits_value':
+        elif nodeName_ == 'totalDigits_value' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1509,7 +1509,7 @@ class simpleOneType(GeneratedsSuper):
             self.unicode_pattern_value = unicode_pattern_value_
             # validate type unicode_pattern_st
             self.validate_unicode_pattern_st(self.unicode_pattern_value)
-        elif nodeName_ == 'anonymous_float_value':
+        elif nodeName_ == 'anonymous_float_value' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
@@ -1519,7 +1519,7 @@ class simpleOneType(GeneratedsSuper):
             self.anonymous_float_value = fval_
             # validate type anonymous_float_valueType
             self.validate_anonymous_float_valueType(self.anonymous_float_value)
-        elif nodeName_ == 'primative_integer':
+        elif nodeName_ == 'primative_integer' and child_.text:
             sval_ = child_.text
             try:
                 ival_ = int(sval_)
@@ -1527,7 +1527,7 @@ class simpleOneType(GeneratedsSuper):
                 raise_parse_error(child_, 'requires integer: %s' % exp)
             ival_ = self.gds_validate_integer(ival_, node, 'primative_integer')
             self.primative_integer = ival_
-        elif nodeName_ == 'primative_float':
+        elif nodeName_ == 'primative_float' and child_.text:
             sval_ = child_.text
             try:
                 fval_ = float(sval_)
diff --git a/tutorial/generateds_tutorial.html b/tutorial/generateds_tutorial.html
index 3730ea9..5ecb044 100644
--- a/tutorial/generateds_tutorial.html
+++ b/tutorial/generateds_tutorial.html
@@ -219,7 +219,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.22</td>
+<tr class="field"><th class="field-name">revision:</th><td class="field-body">2.29.23</td>
 </tr>
 </tbody>
 </table>
@@ -228,7 +228,7 @@ They are used by updateversion.py. -->
 <col class="field-name" />
 <col class="field-body" />
 <tbody valign="top">
-<tr class="field"><th class="field-name">date:</th><td class="field-body">August 03, 2018</td>
+<tr class="field"><th class="field-name">date:</th><td class="field-body">August 16, 2018</td>
 </tr>
 </tbody>
 </table>
@@ -1210,7 +1210,7 @@ named <tt class="docutils literal">garden_api.py</tt>, you can create an instanc
 <div class="footer">
 <hr class="footer" />
 <a class="reference external" href="generateds_tutorial.txt">View document source</a>.
-Generated on: 2018-08-03 21:41 UTC.
+Generated on: 2018-08-16 22:29 UTC.
 Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
 
 </div>
diff --git a/tutorial/generateds_tutorial.txt b/tutorial/generateds_tutorial.txt
index a85b9c3..dddd8f7 100644
--- a/tutorial/generateds_tutorial.txt
+++ b/tutorial/generateds_tutorial.txt
@@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial
 
 .. version
 
-:revision: 2.29.22
+:revision: 2.29.23
 
 .. version
 
diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip
index 49e34849c5ccb29209e2ae4cdd5357a819ce7325..b1d6245bda6c9fa3d2b918bc5768299980209f80 100644
GIT binary patch
delta 11535
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
B&{hBd

delta 11550
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
QxfPR9zAXl0xc~qF07<dHs{jB1

-- 
GitLab