1002 elif typeinfos["type"] == SIMPLETYPE: |
1002 elif typeinfos["type"] == SIMPLETYPE: |
1003 return typeinfos |
1003 return typeinfos |
1004 |
1004 |
1005 def GetEquivalentParents(self, parent): |
1005 def GetEquivalentParents(self, parent): |
1006 return reduce(lambda x, y: x + y, |
1006 return reduce(lambda x, y: x + y, |
1007 [[p] + self.GetEquivalentParents(p) |
1007 [[p] + self.GetEquivalentParents(p) |
1008 for p in self.EquivalentClassesParent.get(parent, {}).keys()], []) |
1008 for p in self.EquivalentClassesParent.get(parent, {}).keys()], []) |
1009 |
1009 |
1010 """ |
1010 """ |
1011 Methods that generates the classes |
1011 Methods that generates the classes |
1012 """ |
1012 """ |
1013 def CreateClasses(self): |
1013 def CreateClasses(self): |
1308 element_name = factory.etreeNamespaceFormat % name |
1308 element_name = factory.etreeNamespaceFormat % name |
1309 if element_infos["maxOccurs"] == "unbounded" or element_infos["maxOccurs"] > 1: |
1309 if element_infos["maxOccurs"] == "unbounded" or element_infos["maxOccurs"] > 1: |
1310 values = self.findall(element_name) |
1310 values = self.findall(element_name) |
1311 if element_infos["elmt_type"]["type"] == SIMPLETYPE: |
1311 if element_infos["elmt_type"]["type"] == SIMPLETYPE: |
1312 return map(lambda value: |
1312 return map(lambda value: |
1313 element_infos["elmt_type"]["extract"](value.text, extract=False), |
1313 element_infos["elmt_type"]["extract"](value.text, extract=False), |
1314 values) |
1314 values) |
1315 return values |
1315 return values |
1316 else: |
1316 else: |
1317 value = self.find(element_name) |
1317 value = self.find(element_name) |
1318 if element_infos["elmt_type"]["type"] == SIMPLETYPE: |
1318 if element_infos["elmt_type"]["type"] == SIMPLETYPE: |
1319 return element_infos["elmt_type"]["extract"](value.text, extract=False) |
1319 return element_infos["elmt_type"]["extract"](value.text, extract=False) |
1419 attr_list = [] |
1419 attr_list = [] |
1420 if "base" in classinfos: |
1420 if "base" in classinfos: |
1421 attr_list.extend(classinfos["base"].getElementAttributes(self)) |
1421 attr_list.extend(classinfos["base"].getElementAttributes(self)) |
1422 for attr in classinfos["attributes"]: |
1422 for attr in classinfos["attributes"]: |
1423 if attr["use"] != "prohibited": |
1423 if attr["use"] != "prohibited": |
1424 attr_params = {"name": attr["name"], "use": attr["use"], |
1424 attr_params = { |
|
1425 "name": attr["name"], |
|
1426 "use": attr["use"], |
1425 "type": gettypeinfos(attr["attr_type"]["basename"], attr["attr_type"]["facets"]), |
1427 "type": gettypeinfos(attr["attr_type"]["basename"], attr["attr_type"]["facets"]), |
1426 "value": getattr(self, attr["name"], "")} |
1428 "value": getattr(self, attr["name"], "")} |
1427 attr_list.append(attr_params) |
1429 attr_list.append(attr_params) |
1428 return attr_list |
1430 return attr_list |
1429 return getElementAttributes |
1431 return getElementAttributes |
1485 else: |
1487 else: |
1486 value = self.content.getLocalTag() |
1488 value = self.content.getLocalTag() |
1487 if self.content is not None: |
1489 if self.content is not None: |
1488 children.extend(self.content.getElementInfos(value)["children"]) |
1490 children.extend(self.content.getElementInfos(value)["children"]) |
1489 elif element["elmt_type"]["type"] == SIMPLETYPE: |
1491 elif element["elmt_type"]["type"] == SIMPLETYPE: |
1490 children.append({"name": element_name, "require": element["minOccurs"] != 0, |
1492 children.append({ |
|
1493 "name": element_name, |
|
1494 "require": element["minOccurs"] != 0, |
1491 "type": gettypeinfos(element["elmt_type"]["basename"], |
1495 "type": gettypeinfos(element["elmt_type"]["basename"], |
1492 element["elmt_type"]["facets"]), |
1496 element["elmt_type"]["facets"]), |
1493 "value": getattr(self, element_name, None)}) |
1497 "value": getattr(self, element_name, None)}) |
1494 else: |
1498 else: |
1495 instance = getattr(self, element_name, None) |
1499 instance = getattr(self, element_name, None) |
1513 if attributes[parts[0]]["attr_type"]["basename"] == "boolean": |
1517 if attributes[parts[0]]["attr_type"]["basename"] == "boolean": |
1514 setattr(self, parts[0], value) |
1518 setattr(self, parts[0], value) |
1515 elif attributes[parts[0]]["use"] == "optional" and value == "": |
1519 elif attributes[parts[0]]["use"] == "optional" and value == "": |
1516 if "default" in attributes[parts[0]]: |
1520 if "default" in attributes[parts[0]]: |
1517 setattr(self, parts[0], |
1521 setattr(self, parts[0], |
1518 attributes[parts[0]]["attr_type"]["extract"]( |
1522 attributes[parts[0]]["attr_type"]["extract"]( |
1519 attributes[parts[0]]["default"], False)) |
1523 attributes[parts[0]]["default"], False)) |
1520 else: |
1524 else: |
1521 setattr(self, parts[0], None) |
1525 setattr(self, parts[0], None) |
1522 else: |
1526 else: |
1523 setattr(self, parts[0], attributes[parts[0]]["attr_type"]["extract"](value, False)) |
1527 setattr(self, parts[0], attributes[parts[0]]["attr_type"]["extract"](value, False)) |
1524 elif parts[0] in elements: |
1528 elif parts[0] in elements: |
1755 return self.GetElementClass(element_with_parent_class, default=default) |
1759 return self.GetElementClass(element_with_parent_class, default=default) |
1756 return element_with_parent_class |
1760 return element_with_parent_class |
1757 |
1761 |
1758 def lookup(self, document, element): |
1762 def lookup(self, document, element): |
1759 parent = element.getparent() |
1763 parent = element.getparent() |
1760 element_class = self.GetElementClass(element.tag, |
1764 element_class = self.GetElementClass( |
1761 parent.tag if parent is not None else None) |
1765 element.tag, parent.tag if parent is not None else None) |
1762 if isinstance(element_class, ListType): |
1766 if isinstance(element_class, ListType): |
1763 children = "".join([ |
1767 children = "".join([ |
1764 "%s " % etree.QName(child.tag).localname |
1768 "%s " % etree.QName(child.tag).localname |
1765 for child in element]) |
1769 for child in element]) |
1766 for possible_class in element_class: |
1770 for possible_class in element_class: |