docs: def fromxml(node):
          """Return a profile instance from the given XML description. Node can be a string or an etree._Element."""
          if not isinstance(node,ElementTree._Element): #pylint: disable=protected-access
              node = parsexmlstring(node)
  
          args = []
  
          if node.tag == 'profile':
              for node in node:
                  if node.tag == 'input':
                      for subnode in node:
                          if subnode.tag.lower() == 'inputtemplate':
                              args.append(InputTemplate.fromxml(subnode))
                  elif node.tag == 'output':
                      for subnode in node:
                          if subnode.tag.lower() == 'outputtemplate':
                              args.append(OutputTemplate.fromxml(subnode))
                          elif subnode.tag.lower() == 'parametercondition':
                              args.append(ParameterCondition.fromxml(subnode))
          return Profile(*args)