diff -r 635d0817508c -r 394d9f168258 xmlclass/xmlclass.py --- a/xmlclass/xmlclass.py Tue Nov 27 12:58:34 2007 +0100 +++ b/xmlclass/xmlclass.py Thu Dec 06 18:05:29 2007 +0100 @@ -212,8 +212,11 @@ classname = "%s_%s"%(parent, nodename) else: classname = nodename - self.GenerateXSDClasses(node, classname) - nodetype = "cls:%s"%classname + if len(node.childNodes) > 0: + self.GenerateXSDClasses(node, classname) + nodetype = "cls:%s"%classname + else: + nodetype = classname if name == "attribute": if "use" in node._attrs: use = GetAttributeValue(node._attrs["use"]) @@ -683,8 +686,10 @@ elif attr_type.startswith("cls:"): val = classes[attr_type[4:].replace("[]","")]() val.loadXMLTree(node) + else: + val = None # Stock value in content attribute - if val: + if val is not None: if attr_type.endswith("[]"): if self.content: self.content["value"].append(val) @@ -692,6 +697,8 @@ self.content = {"name":name,"value":[val]} else: self.content = {"name":name,"value":val} + else: + self.content = {"name":name,"value":None} # Class has a list of attributes that can have different value types elif "multichoice_content" in members.keys() and name in members["multichoice_content"].keys(): @@ -803,8 +810,11 @@ elif value_type.endswith("[]"): for content in self.content["value"]: text += content.generateXMLText(self.content["name"], indent + 1) + elif self.content["value"] is not None: + text += self.content["value"].generateXMLText(self.content["name"], indent + 1) else: - text += self.content["value"].generateXMLText(self.content["name"], indent + 1) + ind5, ind6 = getIndent(indent + 1, self.content["name"]) + text += ind5 + "<%s/>\n"%self.content["name"] elif attr == "multichoice_content": if len(self.content) > 0: for element in self.content: