code: def _parse_child(self, child):
          
          if set(child.attrib) - set(["name", "type", "minOccurs", "maxOccurs"]):
              raise RuntimeError("Unexpected attribute in child")
          name = child.attrib["name"]
          type = child.attrib["type"].split(":")[1]
          min_occurs = child.attrib.get("minOccurs")
          max_occurs = child.attrib.get("maxOccurs")
          if min_occurs is None:
              min_occurs = "1"
          min_occurs = int(min_occurs)
          if max_occurs is None:
              max_occurs = "1"
          if max_occurs != "unbounded":
              max_occurs = int(max_occurs)
          return name, type, min_occurs, max_occurs
docs: Parse a single child element.
  
          @param child: The child C{etree.Element} to parse.
          @return: A tuple C{(name, type, min_occurs, max_occurs)} with the
              details about the given child.